Для отделения базовых типов есть is_integral и is_floating_point.
Можно ли как-то так же из интегральных типов выделить bool и char — char хочу отделить от int8_t/uint8_t, которые, скорее всего, определены, как signed/unsigned char, а в плюсах, как мы знаем, signed char, unsigned char и char — это разные типы