【发布时间】:2017-11-17 15:29:21
【问题描述】:
我将使用以下示例来说明我的问题:
template<typename T>
T diff(T a, T b)
{
return a-b;
}
我希望这个模板函数只在类型 T 被签名时才有效。我能想到的唯一解决方案是对所有无符号类型使用 delete 关键字:
template<>
unsigned char diff(unsigned char,unsigned char) == delete;
template<>
unsigned char diff(unsigned char,unsigned char) == delete;
还有其他解决方案吗?
【问题讨论】:
-
std::is_unsigned可以帮助你(或is_signed)。还没想好具体怎么写,不过是某种 SFINAE。