traits(萃取)和 偏特化
来源:互联网 发布:图片加密软件 编辑:程序博客网 时间:2024/06/05 17:56
traits主要是用来萃取出某一个类中定义的value_type。
template<typename T>
struct A
{
typedef T value_type;
};
template<typename I>
struct traits
{
typedef typename I::value_type value_type; //此处的typename不可少
};
上例的 traits::value_type 的含义:类I中如果定义了value_type,那么就得到I::value_type。如果I是个原生类型(int, float, 或者 原生pointer),就要用到特化和偏特化
特化:
template<>
struct traits<int>
{
typedef int value_type;
};
对于 traits<int>::value_type 就是 int
偏特化:
template<typename I>
struct traits<I*> //
{
typedef I value_type;
};
对于 traits<int*>::value_type 就是 int。
template<typename I>
struct traits<const I*>
{
typedef I value_type;
};
对于 traits<const int*>::value_type 就是 int。如果没有上面这个偏特化,就会变成 const int。
所谓 特化 和 偏特化,就是 当遇到某个A<T>时,匹配哪个最合适的类模版定义。
template<class T> traits {};
template<class T> traits<T*> {};
template<class T> traits<const T*> {};
template<> traits<My*> {};
template<> traits<int> {};
- traits<My>:匹配 template<class T> traits {};
- traits<Other*>:匹配 template<class T> traits<T*> {};
- traits<My*>:匹配 template<> traits<My*> {};
- traits<const My*>:匹配 template<class T> traits<const T*> {};
- traits<My>:匹配 template<class T> traits {};
- traits<int>:匹配 template<> traits<int> {};
- traits<const int>:匹配 template<class T> traits {};
-
- traits(萃取)和 偏特化
- 模板的特化和萃取
- 关于C++的模板偏特化和萃取编程技法
- C++ 中Traits技术 (3) —— 关于特化和偏特化
- C++之traits(萃取技术)
- C++中的萃取机制(traits)
- 模板偏特化 指针 模板萃取 指针
- 模板偏特化 指针 模板萃取 指针
- 篮子、水果和鸡蛋——关于C++的模板偏特化和萃取编程技法
- 模板的特化(特化和偏特化)
- 特化和偏特化
- 特化和偏特化
- 特化和偏特化
- 特化和偏特化
- Traits技术 & 偏特化(partial specialization):
- 模板偏特化 and traits机制
- 萃取(traits)编程技术的介绍和应用
- 萃取(traits)编程技术的介绍和应用
- android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
- HDU 1107 武林
- iPhone 20秒被黑客攻破
- Gspay 和 95epay
- android java代码的启动:app_process
- traits(萃取)和 偏特化
- 域控制器的常规卸载,Active Directory系列之十三
- 域控制器的强制卸载,Active Directory系列之十四
- 域控制器的终极卸载,Active Directory系列之十五
- 实用的外贸收款工具比较
- sql2005排序函数
- 理解域信任关系,Active Directory系列之十六
- Android JNI知识简介
- Android上JNI的调试