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