C++模板的一些巧妙功能
2015-09-13 21:24
239 查看
判断类中是否有指定名称的函数:
判断类成员函数返回值类型:
假设ContianerT为
#include<utility> #define HAS_MEMBER(member)\ template<typename T,typename... Args>\ struct has_member_##member\ {\ private:\ template<typename U> \ static auto Check(int)->decltype(std::declval<U>().member(std::declval<Args>()...), std::true_type()); \ template<typename U>\ static std::false_type Check(...);\ public:\ enum{value=std::is_same<decltype(Check<T>(0)),std::true_type>::value };\ };\ HAS_MEMBER(before)
cout << has_member_before<AA>().value << endl;//是否有无参的before函数 cout << has_member_before<AA,int>().value << endl;//是否有参数是int的before函数
判断类成员函数返回值类型:
假设ContianerT为
vector<int>或者const vecotr<int>
decltype(std::declval<ContainerT>().begin()) it_;
相关文章推荐
- C++模板的一些巧妙功能
- C语言初步接触
- 设计模式C++实现(8)——代理模式
- 设计模式C++实现(7)——外观模式、组合模式
- 设计模式C++实现(6)——建造者模式(Builder)
- 设计模式C++实现——简单工厂(并不在23种之中)
- 设计模式C++实现(2)——策略模式
- 设计模式C++实现(3)——适配器模式
- 设计模式C++实现(4)——饿汉懒汉之单例模式
- 浅谈C/C++引用和指针的联系和区别
- c++11——右值引用
- C++达到String分类
- C语言漫谈(二)
- 「C语言回顾之旅」第二篇:指针详解进阶
- C++指针和动态内存分配
- 网易游戏2016校招"数据挖掘研究员"在线比赛题一求解算法(C++)
- C++中的指针和数组
- Effective C++——条款36(第6章)
- C++Primer Plus 第九章-存储持续性、作用域和链接性
- 【C/C++学院】0802-链式栈/链表队列以及优先队列/封装链表库