Здравствуйте, Marty, Вы писали:
M>Для отделения базовых типов есть is_integral и is_floating_point.
M>Можно ли как-то так же из интегральных типов выделить bool и char — char хочу отделить от int8_t/uint8_t, которые, скорее всего, определены, как signed/unsigned char, а в плюсах, как мы знаем, signed char, unsigned char и char — это разные типы
Можно, но зачем?
https://godbolt.org/z/496ss643o
#include <stdio.h>
int fn(bool) { return 0; }
int fn(char) { return 1; }
int fn(signed char) { return 2; }
int fn(unsigned char) { return 3; }
template<class T>struct Fn;
template<>struct Fn<bool> { enum { value=0 }; };
template<>struct Fn<char> { enum { value=1 }; };
template<>struct Fn<signed char> { enum { value=2 }; };
template<>struct Fn<unsigned char> { enum { value=3 }; };
int main() {
bool v0; char v1; signed char v2; unsigned char v3;
printf("v0=%d %d\n",fn(v0),Fn<decltype(v0)>::value);
printf("v1=%d %d\n",fn(v1),Fn<decltype(v1)>::value);
printf("v2=%d %d\n",fn(v2),Fn<decltype(v2)>::value);
printf("v3=%d %d\n",fn(v3),Fn<decltype(v3)>::value);
return 0;
}