我做了以下事情:
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)。有这样的功能吗?
答案 0 :(得分:6)
您要使用decltype
,而不是typeof
。自C ++ 11起可用:
long long int x = 0;
int digits_of_x = std::numeric_limits<decltype(x)>::digits;