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.