开发者

Is it possible to do the following with auto in C++0x?

开发者 https://www.devze.com 2023-01-30 19:41 出处:网络
Eric Lippert has written an article about Why no var o开发者_Go百科n fields? in C#. I was curious, will we be able to do that in C++0x? ex.

Eric Lippert has written an article about Why no var o开发者_Go百科n fields? in C#. I was curious, will we be able to do that in C++0x? ex.

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

I couldn't reach an answer through the latest draft, sorry.

Thanks,


Sadly you cannot. The spec says at 7.1.6.4/3 and follows

Otherwise, the type of the variable is deduced from its initializer. The name of the variable being declared shall not appear in the initializer expression. This use of auto is allowed when declaring variables in a block (6.3), in namespace scope (3.3.6), and in a for-init-statement (6.5.3).

The auto type-specifier can also be used in declaring a variable in the condition of a selection statement (6.4) or an iteration statement (6.5), in the type-specifier-seq in the new-type-id or type-id of a new-expression (5.3.4), in a for-range-declaration, and in declaring a static data member with a brace-or-equal-initializer that appears within the member-specification of a class definition (9.4.2).

A program that uses auto in a context not explicitly allowed in this section is ill-formed.

I'm not sure why they forbid auto for non-static data members, it would be quite handy.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号