enable_if

来源:互联网 发布:mysql 备份 自动 编辑:程序博客网 时间:2024/05/21 10:10
template<bool _Test,class _Ty = void>struct enable_if{// type is undefined for assumed !_Test}; template<class _Ty>struct enable_if<true, _Ty>{// type is _Ty for _Testtypedef _Ty type;}; // TEMPLATE CLASS conditionaltemplate<bool _Test,class _Ty1,class _Ty2>struct conditional{// type is _Ty2 for assumed !_Testtypedef _Ty2 type;};////////////////返回值不同实现重载////
template <class T>typename std::enable_if<std::is_arithmetic<T>::value, int>::type foo( T &t){return static_cast<int>(t);}template <class T>typename std::enable_if<std::is_class<T>::value, T>::type & foo( T &t){return t;}

这确实是重载呢,客官且看下面的例子

foo(n1);Myclass a;foo(a);





0 0