Type Traits
来源:互联网 发布:软件下载网站排行 编辑:程序博客网 时间:2024/05/28 15:58
编译期根据型别作判断的泛型技术
template <typename T >
class TypeTraits
{
private :
template <class U> struct PointerTraits
{
enum{result = false};
typedef NullType PointeeType;
}
template <class U> struct PointerTraits<U *>
{
enum {
result =true;
typedef U PointeeType;
}
public:
enum{isPointer = PointerTraits<T>::result};
typedef PointerTraits<T>::PointeeType PointeeType;
}
}
如下std::vector::iterator实做内容
int main()
{
const bool
iterIsPtr = TypeTraits<vector<int>::itorator>::isPointer;
cout <<"vector<int>::iterator is"<<iterIsPtr?"fast":"smart"<<'\n'
}
侦测Pointers to members
template <typename T>
class TypeTraits
{
private:
template<class U>struct PToMraits
{
enum {result=false;}
}
template<class U ,class V>
struct PToMTraits<U V::*>
{
enum{result = true};
}
public :
enum{
isMemberPointer = PToMTraits<T>::result};
}
}
侦测基本型别方法
IndexOf
优化参数型别
referencedType 和 isPrimitive
卸除饰词const与Volatile
template <typename T>
class TypeTraits
{
private:
template<class U>struct UnConst
{
typedef U Result;
}
template <class U >struct UnConst<const U>
{
typedef U result;
}
public :
typedef UnConst<T>::Result NonConstType;
}
总结:基本结合了C++ 与 template ,通过Int2Type<>方式,实现了如上许多的功能,其主要作用在编译期实现功能,语法难度更深层次。
- Type Traits
- type traits
- Type Traits 实例,提高效率
- C++ Type traits
- C++ Type traits
- C++ Type traits
- 【转】C++ type traits
- c++ type traits
- c++ type traits 2
- 对type traits的理解
- C++ Type traits(转)
- 【转】C++ type traits解释
- STL之四 type traits
- type traits 之"本质论"
- C++ template 的 type traits 代码
- C++ Type traits的简单用法
- STL的榨汁机——type traits
- C++里面的一个technique : Type Traits
- Sql Server递归查询实例
- 四叉树
- SpringMVC学习总结(四).SpringMVC处理Json与文件的上传下载
- 深入浅出C/C++中的正则表达式库
- 最优服务次序问题
- Type Traits
- Html学习
- 欢迎使用CSDN-markdown编辑器
- 为什么程序员应该要尝试写一写博客
- (转)Rust :移动闭包move
- 利用Intellij+MAVEN+SpringMVC+URI.js实现页面的中英文切换(国际化)
- Mysql免安版怎么使用
- 预编译宏中的space
- 读书--冒号课堂-0