-
Notifications
You must be signed in to change notification settings - Fork 636
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Construct.h 中的 void destroy(ForwardIterator, ForwardIterator) 有点疑惑 #24
Comments
假设ForwardIterator为char,那么_type_traits <ForwardIterator>::is_POD_type为_true_type。
|
欢迎探讨。 恐怕我的问题表述不清,我再说一下。 我的疑问是:destroy() 这个函数模板,它为了更高效地析构 [first, last) 内的元素,需要对迭代器所指的元素类型进行分类,于是应该以萃取的方式得到元素类型。
当 is_POD_type() 为 true_type 和 false_type 时分别执行下列函数模板:
那么通过迭代器类型来决定是否调用析构函数合理吗? 举个例子,对于 测试代码如下:
运行结果:
|
你说得对。这是原作者的练手项目,并不是很严谨。
建议对照《STL源码剖析》批判着学。 |
嗯,谢谢建议。 其实我也正在根据 SGI STL 造自己的轻量 STL,而作者的 TinySTL 给了我最初的造轮子的勇气和想法;瑕不掩瑜,作者的完成度还是很高的。 |
学习了 |
这个函数是这样的:
第 3 句用了
_type_traits <ForwardIterator>::is_POD_type
。这个版本的 destroy 对于 POD 类型不调用析构函数,对于非POD类型则调用析构函数。
假设类型 T 是 一个 ForwardIterator 的 value_type,那么通过这个 ForwardIterator 的类型判断可以决定 T 是 否为 POD 类型吗?
The text was updated successfully, but these errors were encountered: