Используйте тип переменной в качестве аргумента шаблона - PullRequest
0 голосов
/ 20 ноября 2018

Я сделал следующее:

long long int x = 0;
int digits_of_x = std::numeric_limits<long long int>::digits;

И все работает отлично.Однако это может легко привести к ошибке, если кто-то изменит тип x.Поэтому я бы предпочел сделать это так:

long long int x = 0;
int digits_of_x = std::numeric_limits<typeof(x)>::digits;

Я нашел расширение GCC typeof(), но я хочу использовать некоторую стандартную функцию (до C ++ 17).Есть ли такая функция?

1 Ответ

0 голосов
/ 20 ноября 2018

Вы хотите использовать decltype, а не typeof.Доступно с C ++ 11:

long long int x = 0;
int digits_of_x = std::numeric_limits<decltype(x)>::digits;
...