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

时间:2010-12-16 23:40:03

标签: c++ class c++11 type-inference

Eric Lippert在C#中撰写了一篇关于Why no var on fields?的文章。我很好奇,我们能用C ++ 0x做到吗?离。

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

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

谢谢,

1 个答案:

答案 0 :(得分: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中的type-speci-seq中-id of new-expression(5.3.4),for-range-declaration,以及声明一个静态数据成员,其具有在类定义的成员规范中出现的大括号或等于初始值(9.4) 0.2)。

     

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

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