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
std::is_integral<T>::value
equalの場合、型 T を指定せずに呼び出すことができますtrue
。この場合、 std::enable_if の特殊化が呼び出され、この定義にはデフォルトのテンプレート パラメータはありません。
テンプレートパラメータメカニズムを推測するためですか?はいの場合、特殊化定義ではないデフォルトのパラメーターを指定したのはなぜですか?