我可以根据布尔表达式禁用std :: char_traits的特化吗?

时间:2015-12-03 07:23:57

标签: c++11 template-specialization sfinae

使用C ++ 11(或C ++ 14),我想为std::char_traits专门设置unsigned char,但仅限于!std::is_same<char, unsigned char>::value。 (因为std::char_traits<char>已经存在。)

所以我目前有这样的专业化,从这开始:

namespace std {
template<>
struct char_traits<unsigned char> {
    using char_type = unsigned char;
    etc...

问题是,如果std::is_same<char, unsigned char>::value,我是否可以通过SFINAE使这种专业化“不存在”。我可以找到的用于启用/禁用特化的所有示例取决于具有用于启用的虚拟模板参数的非专用模板。我显然无法以这种方式改变std::char_traits。我错过了一条路吗?

0 个答案:

没有答案