is_integral и is_integer кажется, отвечают на то же самое тем же способом.
Из ссылок на соответствующие страницы документации is_integral
, по-видимому, отсутствуют специализации для следующих типов
signed char
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
Тем не менее, скомпилированный пример, показывает (разумеется) их идентичное поведение по этим типам:
#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;
}
Итак, если они тоже ведут себя одинаково, то в чем смысл вводить оба из них в С++ 11?
Итак, если они тоже ведут себя одинаково, то в чем смысл вводить их обоих в С++ 11?
Изменить: рефракции
Как отмечает Useless, фраза, включающая любые подписанные, неподписанные и cv-квалификационные варианты из страницы is_integral
doc, показывает, что даже их спецификации полный матч.