次の (推奨! ) 構文に欠点はありますか?
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
結果型の推論の使用を禁止します。