您的位置:首页 > 编程语言 > C语言/C++

C++模板的一些巧妙功能

2015-09-13 21:24 323 查看
判断类中是否有指定名称的函数:

#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_;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: