On 03/10/2010 11:10 AM, Andrei Alexandrescu wrote:
On 03/10/2010 11:05 AM, Ellery Newcomer wrote:
On 03/10/2010 10:48 AM, Andrei Alexandrescu wrote:
On 03/10/2010 08:42 AM, Andrei Alexandrescu wrote:
{auto t = foo.prop; auto t1 = t; ++t1; foo.prop = t1; return t;}()

within an rvalue context, and into:

{auto t = foo.prop; ++t; foo.prop = t; return t;}()

within a void context.

The latter should be:

{auto t = foo.prop; ++t; foo.prop = t;}()

because there's no need to return a value.


Andrei

no

auto a = foo.prop++;

?

Not sure I understand the question. The statement you mention would end
up lowered to:

auto a = {auto t = foo.prop; auto t1 = t; ++t1; foo.prop = t1; return
t;}();

which does what the user would expect.

(Lowering is conceptual, e.g. inline code or an intrinsic named function
could be used.)


Andrei

oop. nevermind. missed the void context part.

Reply via email to