是否可以在C++ 0x中使用auto执行以下操作?

Ara*_*raK 8 c++ type-inference class c++11

Eric Lippert写了一篇关于为什么没有字段变化的文章在C#中.我很好奇,我们能用C++ 0x做到吗?恩.

struct mystruct_t
{
   auto i = 0, d = 0.0, s = std::string("zero");
};
Run Code Online (Sandbox Code Playgroud)

抱歉,我无法通过最新的草案得到答案.

谢谢,

Joh*_*itb 12

可悲的是,你做不到.该规范在7.1.6.4/3处说明如下

否则,从其初始化程序推导出变量的类型.声明的变量的名称不应出现在初始化表达式中.在块(6.3),命名空间范围(3.3.6)和for-init-statement(6.5.3)中声明变量时,允许使用auto.

auto-type-specifier还可用于在选择语句(6.4)或迭代语句(6.5)的条件中声明变量,在new-type-id或type-id中的type-speci-seq中. new-expression(5.3.4),在for-range-declaration中,并声明一个静态数据成员,其具有在类定义的成员规范中出现的大括号或等于初始值(9.4.2) .

在本节未明确允许的上下文中使用auto的程序是不正确的.

我不确定为什么他们禁止auto非静态数据成员,这将非常方便.