Hi,
On 05/22/2014 08:13 PM, Jason Merrill wrote:
On 05/22/2014 04:27 AM, Paolo Carlini wrote:
lambda-ice7.C:8:9: error: cannot capture by value ‘a’ of incomplete type
‘A’
[=](){a;};
^
All the carets in your mail are in the first column; is this one in
the right place for you?
It would be definitely wrong, but it's just that I did something wrong
with the mailer, it shows Ok on my shell, under the a. Look at the
column, 9, which is fine.
Let's not print out the expression, we've been moving away from that.
Maybe "capture by value of incomplete type 'A'".
Good. I wanted to ask about that. Also, by copy instead of by value,
right? Because the Standard always talks about copy (likewise clang).
OK with that change.
4- Finally, something I noticed while working on add_capture: right
above the new check there is:
type = lambda_capture_field_type (initializer, explicit_init_p);
if (by_reference_p)
{
type = build_reference_type (type);
if (!real_lvalue_p (initializer))
error ("cannot capture %qE by reference", initializer);
}
now, interestingly, nothing in the testsuite exercises this error.
And, so far, I failed to create a testcase for it. The Standard too
doesn't seem to me so clear about that. Ideas?!?
void f()
{
[&x=1]{}
}
Right, thanks. I'm probably going to add it, at some point. Me, I was
looking for something not using C++14 initializers, I think in that case
is more difficult!?!
Paolo.