C++ 模板 使用 enum 代替 typename
2014-08-28 12:15
246 查看
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还能这么用,于是就有上了上面的例子.
应该属于比较偏门的用法吧?
相关文章推荐
- C++ - 模板(template)中typename的使用方法
- C++中 模板Template的使用 (typename)
- [转载]c++ 模板中typename的使用
- C++ - 模板(template)中typename的使用方法
- 【C++模板】C++声明模板时能否用struct关键字代替class或者typename
- c++中模板使用时候typename和class的区别
- c++中模板使用时候typename和class的区别
- C++模板使用介绍
- 使用C++模板实现不需要IDL的RPC【二】
- 使用C++模板实现不需要IDL的RPC【二】
- C++值传递、引用传递、指针传递以及STL模板堆的使用
- 关于C++中模板中的typename和class的区别比较
- C++使用模板实现简单的singleton
- 利用C++模板,代替虚函数,实现类的静态多态性(加入性能测试部分)
- C++ typeid typename使用
- c++中enum 如何使用
- 【转载】C++模板使用介绍
- 使用C++模板封装SQLite(完整版)
- Effective C++读书笔记--Item 2:使用const,enum和template inline函数代替宏
- 利用C++模板,代替虚函数,实现类的静态多态性(加入性能测试部分)