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.
精彩评论