C++11中是否可以使用'auto'关键字作为存储类别说明符?

10

auto 关键字可以在C++11中用作存储类别限定符吗?

以下代码在C++11中是否合法?

int main() {
   auto int x;
}
2个回答

13

不行,在C++11中这段代码是不合法的。在C++11中,auto用于从初始化器推导变量的类型,不能用作存储类别说明符。

正确用法:

int main()
{
   auto x = 12; // x is an int
   auto y = 12.3; // y is a double
}

现在是C++11了,是吗?我有点困惑。希望很快能通过一些官方声明来解决这个问题 :) - Björn Pollex
@Space_C0wb0y:是的,很可能官方名称会是C++11 :) - Prasoon Saurav
2
@Space_C0wb0y:还没有完全确定,当Sutter被问及这个问题时,他说他宁愿等待(现在没有必要着急),直到标准真正达成一致,然后再给C++0x贴上其明确的版本号。 - Matthieu M.
@Björn Pollex:只有在 ISO 在一月之前发布标准的情况下才会这样。如果没有,那就不会了。因此,在我看来,C++0x 仍然是更明确的术语。 - Sebastian Mach

0
auto int x;

这是一个循环 - 你实际上声明了类型为int。既然你已经有了这个信息 - 没有理由不简单地使用:

int x;

如果你想要声明一个变量 x 与当前作用域内的另一个变量类型相同,你可以使用 decltype

using sometype = float;
sometype y;
decltype(y) x;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接