非charの配列の特性を部分的に特殊化しようとしています:
template<typename T>
struct is_container : std::false_type {};
template<typename T, unsigned N>
struct is_container<T[N]>
: std::enable_if<!std::is_same<T, char>::value, std::true_type>::type {};
Visual Studio 2010は私にC2039を提供します( ...type
の要素ではありませenable_if
ん)。ただし、SFINAEは、コンパイラエラーを発生させるのではなく、ここでボトムアウトするべきではありませんか?または、この場合、SFINAEは適用されませんか?
もちろん、非文字と文字の特殊化を分離することもできます。
template<typename T>
struct is_container : std::false_type {};
template<typename T, unsigned N>
struct is_container<T[N]> : std::true_type {};
template<unsigned N>
struct is_container<char[N]> : std::false_type {};
しかし、この特定のケースでSFINAEが機能しない理由を本当に知りたいと思います。