使用变量的类型作为模板参数

时间:2018-11-19 23:07:13

标签: c++ c++11 types c++14 c++17

我做了以下事情:

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 :(得分:6)

您要使用decltype,而不是typeof。自C ++ 11起可用:

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