Re: Отделить bool/char от остальных integral'ов
От: kov_serg Россия  
Дата: 08.04.25 20:47
Оценка: +1
Здравствуйте, 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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.