C++ 模板 使用 enum 代替 typename
来源:互联网 发布:js跨域访问 编辑:程序博客网 时间:2024/06/16 06:40
enum testEnum {A, B, C};template <testEnum C>class TestClassTemplate {public: void print() { printf("common\n"); }};template <>class TestClassTemplate<A> {public: void print() { printf("specific int\n"); }};int main() { TestClassTemplate<B> doubleClassTemplate; TestClassTemplate<A> intClassTemplate; doubleClassTemplate.print(); intClassTemplate.print();}//Res://common//specific int
C++ 模板使用 enum 取代 typename/class
察看 gnu的shared_ptr实现,偶然发现这样:
// Empty helper class except when the template argument is _S_mutex. template<_Lock_policy _Lp> class _Mutex_base { protected: // The atomic policy uses fully-fenced builtins, single doesn't care. enum { _S_need_barriers = 0 }; };
template<_Lock_policy _Lp> 对这一句,有些疑惑,自己印象里template 后面跟的都是 <class/typename A> 或者<>, 但是还没见过这种的,
后来跟发现:
enum _Lock_policy { _S_single, _S_mutex, _S_atomic }; 原来是个enum, 没想到enum还能这么用,于是就有上了上面的例子.
应该属于比较偏门的用法吧?
0 0
- C++ 模板 使用 enum 代替 typename
- 使用注解代替enum
- 使用类来代替enum
- Android:使用@IntDef代替Enum
- 【代码优化】使用enum代替int常量
- 尽量使用const、enum、inline代替#define
- 【C++模板】C++声明模板时能否用struct关键字代替class或者typename
- C/C++ enum使用
- Linux C/C++ 模板:用typename消除歧义
- C - enum和typedef enum的使用
- typename 和 class在模板使用的时候的区别
- C++中 模板Template的使用 (typename)
- c++中模板使用时候typename和class的区别
- C++ primer 第四版 第十六章 模板 何时使用typename
- c++中模板使用时候typename和class的区别
- EffectiveJava(31) -- 使用实例域代替Enum的序数排序
- 模板 关键词 typename
- 使用纯PHP代替模板引擎
- CentOS配置smaba与Windows共享文件
- php的post接收原始参数的2种方法
- 三极管的电平转换及驱动电路分析
- traceback.print_stack(file=sys.stdout)与traceback.extract_stack()
- 对功率谱的一点理解
- C++ 模板 使用 enum 代替 typename
- JS正则表达式语法
- IE8及以下JavaScript的一个bug
- Unity3D教程:换装方法
- Python 内置 time 模块 API 中文档案
- 数组的指针特性
- Longest substring without repeating characters解法
- DSP-BIOS使用入门
- EPT 原理解释