enable_if

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);





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章