在c ++ 11中添加了'auto'-keyword,我想知道是否有可能'复制'另一个变量的类型,或函数的返回类型。
例如,在此代码中:
unsigned short x;
[...] // x is initialized with some value
for(auto i=0;i<x;i++)
{
[...]
}
我将是 int 。是否可以将 i 与 x 设为相同类型,而无需手动将其声明为'unsigned short'?
基本上,我正在寻找的是:
[...]
for(type(x) i=0;i<x;i++)
[...]
答案 0 :(得分:5)
您正在寻找c ++ 11支持的decltype specifier。
检查实体的声明类型或表达式的类型和值类别。
您可以使用它来声明相同类型的另一个变量
for(decltype(x) i=0;i<x;i++)
或来自函数的返回类型。
unsigned short f();
//...
for(decltype(f()) i=0;i<x;i++)