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 _Test typedef _Ty type; }; // TEMPLATE CLASS conditional template<bool _Test, class _Ty1, class _Ty2> struct conditional { // type is _Ty2 for assumed !_Test typedef _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);
enable_if
最新推荐文章于 2024-01-23 18:55:17 发布