以下(建议!)语法有什么缺点吗?
template< typename T >
void f() static_assert(std::is_same< T, int >::value)
{ ; }
而不是 SFINAE(看起来像拐杖):
template< typename T, typename = typename std::enable_if< std::is_same< T, int >::value >::type >
void f() { ; }
甚至更糟:
template< typename T >
typename std::enable_if< std::is_same< T, int >::value >::type
f()
{ ; }
禁止使用auto
结果类型的推导。