C++之traits(萃取技术)
traits相关总结:
1.typedef 可以在class或者struct中定义
template<T>
class CXX
{
typedef T value_type;
};
同样,template可以嵌入template!
2.见到template<>多半是在模板特化。特化分全特化、偏特化等。熟记这点,否则有些地方看不懂。
3.template其实就是扩展编译器,让代码自动生成。其功能等同于#define之类。说白了,c++的这些东西就是让你的代码可以重用,减少日后不必要的编程量。
4.traits就目前我们能用到的东西而言,就是它能统一接口,让你的template可以兼容基本类型。
5.一个实例设想:
像WINAPI经常提供诸如XxA和XxW,要跟据使用的ASCII码还是UNICODE码来决定调用。那么可以利用template配合traits来实现——只用template估计不行,ASCII跟UNICODE在有些地方可能是不同的,这些地方就要traits上阵了。
引用几篇文章:
《C++ Traits》http://www.cnblogs.com/hush/archive/2004/03/10/2717.html
《type traits 之”本质论”》http://blog.csdn.net/sanlongcai/archive/2007/09/15/1786647.aspx
《traits:Traits技术初探》http://www.cppblog.com/woaidongmao/archive/2008/11/09/66387.html(这篇讲得真的很好!)