【发布时间】:2012-11-13 13:29:02
【问题描述】:
根据 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 等于 true。在这种情况下,将调用 std::enable_if 的特化,并且在此定义中没有默认模板参数。
是不是因为推导模板参数机制?如果是,为什么要为非专业化定义指定默认参数?
【问题讨论】: