从其他变量'复制'变量类型

时间:2016-02-06 14:45:48

标签: c++ c++11 auto

在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++)
[...]

1 个答案:

答案 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++)