C++11 我可以基于布尔表达式禁用std::char\u特征的专门化吗?

C++11 我可以基于布尔表达式禁用std::char\u特征的专门化吗?,c++11,template-specialization,sfinae,C++11,Template Specialization,Sfinae,使用C++11(或C++14),我想专门研究std::char\u traits的无符号字符,但前提是!std::is_same::value。(因为std::char\u traits已经存在。) 所以我现在有这样一个专业,它是这样开始的: namespace std { template<> struct char_traits<unsigned char> { using char_type = unsigned char; etc... 名称空间

使用C++11(或C++14),我想专门研究
std::char\u traits
无符号字符
,但前提是
!std::is_same::value
。(因为
std::char\u traits
已经存在。)

所以我现在有这样一个专业,它是这样开始的:

namespace std {
template<>
struct char_traits<unsigned char> {
    using char_type = unsigned char;
    etc...
名称空间std{
模板
结构字符特征{
使用字符类型=无符号字符;
等
问题是我是否有办法让这种专业化“不存在”如果
std::is_same::value
,则通过SFINAE。我可以找到的所有启用/禁用专门化的示例都依赖于具有虚拟模板参数的非专门化模板。我显然无法以这种方式更改
std::char_traits
。是否缺少路径?

1)
char
未签名的char
始终是不同的类型,即使
char
是无符号的。2)我不认为
char\u traits
可以免于“用户专门化必须取决于用户定义的类型”规则C:1)好的观点。这应该可以免除我的需要。2)呃。我在标准中看到了。所以专门化
uint8\u t
在技术上是禁止的?(我使用
static\u assert
来确保
uint8\u t
无符号字符