【发布时间】:2014-05-31 13:12:54
【问题描述】:
is_integral 和 is_integer 似乎以同样的方式回答了同样的事情。
从相关文档页面的链接中,is_integral 似乎缺少以下类型的专业化
signed char
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
然而,compiled example,(当然)也显示了它们在这些类型上的相同行为:
#include <iostream>
#include <type_traits>
using namespace std;
int main()
{
cout << is_integral<signed char >::value << endl;
cout << is_integral<unsigned char >::value << endl;
cout << is_integral<unsigned short >::value << endl;
cout << is_integral<unsigned int >::value << endl;
cout << is_integral<unsigned long >::value << endl;
cout << is_integral<unsigned long long>::value << endl;
return 0;
}
如果它们的行为也相同,那么在 C++11 中同时引入它们有什么意义?
如果它们的行为也相同,那么在 c++11 中引入它们有什么意义呢?
编辑:改写
正如Useless 指出的那样,is_integral 文档页面中的短语包括任何有符号、无符号和 cv 限定的变体表明,即使它们的规范也是完全匹配的。
【问题讨论】:
-
...似乎缺少一些特化... - 你错过了句子 “包括任何有符号、无符号和 cv 限定的变体。” 在您的第一个链接页面中。
-
@Useless 是的,正确的。那就更糟了!