'Copy' 来自其他变量的变量类型

'Copy' variable type from other variable

在 c++11 中添加了 'auto'-关键字,我想知道是否可以 'copy' 另一个变量的类型,或者 return 类型一个函数。

例如,在这段代码中:

unsigned short x;
[...] // x is initialized with some value
for(auto i=0;i<x;i++)
{
    [...]
}

i 将是一个 int。是否可以给 ix 相同的类型,而无需手动将其声明为 'unsigned short'?

基本上,我正在寻找的是:

[...]
for(type(x) i=0;i<x;i++)
[...]

您正在寻找 decltype specifier,它受 c++11 的支持。

Inspects the declared type of an entity or the type and value category of an expression.

你可以用它来声明同类型的另一个变量,

for(decltype(x) i=0;i<x;i++)

或来自 return 类型的函数。

unsigned short f();
//...
for(decltype(f()) i=0;i<x;i++)