根据 enable_if struct 的定义:
template<bool B, class T = void>
struct enable_if {};
template<class T>
struct enable_if<true, T> { typedef T type; };
我想知道如何
template<class T>
T foo(T t, typename std::enable_if<std::is_integral<T>::value >::type* = 0)
{
return t;
}
特别 :
typename std::enable_if<std::is_integral<T>::value >::type
可以在没有指定类型 T 的情况下调用,以防std::is_integral<T>::value
equal true
。在这种情况下,将调用 std::enable_if 的特化,并且在此定义中没有默认模板参数。
是不是因为推导模板参数机制?如果是,为什么为非专业化定义指定默认参数?