在以下(建议!)语法中有什么缺点吗?
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() { ; }
解决方法
为什么使用static_assert比
Concepts Lite语法更好?
template< typename T > void f() requires Int<T>() { }
要么:
template< Int T > void f() { }