废话不多说,上来贴代码最实在,哈哈! 以下代码量有点多,不过这都是在下一手一手敲出来的,小巧好用,把以下代码复制出来,放到相应的hpp文件即可,VS,GCC下均能编译通过 接下来是traits库的完整代码 ...
分类:
编程语言 时间:
2016-03-31 23:20:12
阅读次数:
277
解释说明
traits侯捷老师的翻译是萃取。其目的就是在编译期进行模板调用的类型识别,从而做一些事情。
最突出的例子,我觉得不是《STL源码剖析》中“迭代器概念与traits编程技法"这一章的说明,而是stl算法中copy的实现。代码在stl源码的stl_algobase.h中。
copy的最终实现,大致分为两类,一类是直接整块内存的memmove操作,另一类是一个个对象赋值。其中涉及has...
分类:
其他好文 时间:
2016-03-14 18:56:33
阅读次数:
250
在type_traits头文件中定义了许多非常好玩的东西,这里对着 c++ reference 翻译一丢丢 一,helper class , std::intergral_constant 我们知道对在模板参数中的非类型参数必须为常量,所以这个东西就是可以为类型T的任意一个常量v,做出来一个特定
分类:
编程语言 时间:
2016-03-13 17:49:36
阅读次数:
334
Item 47: Use traits classes for information about types.
C++中的 Traits 类可以在编译期提供类型信息,它是用Traits模板及其特化来实现的。 通过方法的重载,可以在编译期对类型进行”if…else”判断。我们通过STL中的一个例子来介绍Traits的实现和使用。
本文以iterator_traits为例介绍了如何实...
分类:
其他好文 时间:
2016-02-19 12:44:52
阅读次数:
203
本人写过与此相关的两篇博客,一个是<cstring>头文件的实现,还有一个是<cwchar>的实现。这里的char_traits模板类在此基础上实现。 为了方便。将源码一起封装于名字空间mystd里。 代码例如以下!!! // 此文件命名为 "char_traits.h" // vs2012 调试通
分类:
编程语言 时间:
2016-02-07 13:31:37
阅读次数:
196
看了《stl源码剖析》中关于traits的部分,由于对模板还不是很熟悉,就看了一下还未完工的C++ Template 进阶指南 ,感觉收获很大,推荐一下。 在使用迭代器时,为了知道它的相应类型,可以使用模板的参数推导,代码如下template struct MyItertypedef T valu....
分类:
其他好文 时间:
2016-01-24 01:48:12
阅读次数:
249
参考资料? cplusplus.com:http://www.cplusplus.com/reference/type_traits/decay/? cppreference.com:http://en.cppreference.com/w/cpp/types/decaystd::decay简介? ...
分类:
其他好文 时间:
2015-12-11 20:45:14
阅读次数:
268
条款47 请使用traits classes表现类型信息记住:★Traits classes使得“类型相关信息”在编译期可用。它们以templates和“templates特化”完成实现★整合重载技术后,traits classes有可能在编译期对类型执行if...else测试-----------...
分类:
其他好文 时间:
2015-12-07 10:32:39
阅读次数:
196
type_traits.h// Filename: type_traits.h// Comment By: 凝霜// E-mail: mdl2009@vip.qq.com// Blog: http://blog.csdn.net/mdl13412/* * * Copy...
分类:
其他好文 时间:
2015-11-23 13:25:01
阅读次数:
247
stl_config.h defalloc.h stl_alloc.h memory.cpp stl_construct.h stl_uninitialized.h stl_iterator.h type_traits.h stl_vector.h stl_pair.h stl_list.h stl...
分类:
编程语言 时间:
2015-11-23 13:15:24
阅读次数:
172