[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Nathan Sidwell changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Nathan Sidwell --- Fixed r256842.
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 --- Comment #5 from Nathan Sidwell --- Author: nathan Date: Thu Jan 18 11:53:50 2018 New Revision: 256842 URL: https://gcc.gnu.org/viewcvs?rev=256842=gcc=rev Log: PR c++/83160] local ref to capture https://gcc.gnu.org/ml/gcc-patches/2018-01/msg01638.html PR c++/83160 * cp-tree.h (mark_use): Declare. * expr.c (mark_use): Make extern. * call.c (direct_reference_binding): Set inner conv's rvaluedness_matches_p, if it is an identity. (convert_like_real): Mark lvalue or rvalue use for identity as rvaledness_matches_p demands. PR c++/83160 * g++.dg/cpp0x/pr83160.C: New. Added: trunk/gcc/testsuite/g++.dg/cpp0x/pr83160.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/call.c trunk/gcc/cp/cp-tree.h trunk/gcc/cp/expr.c trunk/gcc/testsuite/ChangeLog
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Richard Biener changed: What|Removed |Added Priority|P3 |P1
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Nathan Sidwell changed: What|Removed |Added Status|NEW |ASSIGNED CC||nathan at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |nathan at gcc dot gnu.org
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Markus Trippelsdorf changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-12-04 CC||trippels at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Markus Trippelsdorf --- markus@x4 /tmp % cat foo.ii template void CmpHelperLT(T &); void TestBody() { const int a = 0; [] { CmpHelperLT(a); }; } markus@x4 /tmp % clang++ -w -c foo.ii markus@x4 /tmp % icpc -c foo.ii markus@x4 /tmp % g++ -c foo.ii foo.ii: In lambda function: foo.ii:4:23: error: lvalue required as unary ‘&’ operand [] { CmpHelperLT(a); }; ^
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Markus Trippelsdorf changed: What|Removed |Added CC||sylvestre at debian dot org --- Comment #3 from Markus Trippelsdorf --- *** Bug 82751 has been marked as a duplicate of this bug. ***
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org, ||jason at gcc dot gnu.org --- Comment #2 from Jakub Jelinek --- This changed with r253266 aka PR56973 or DR696.
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Richard Biener changed: What|Removed |Added Target Milestone|--- |8.0
[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83160 Daniel Krügler changed: What|Removed |Added CC||daniel.kruegler@googlemail. ||com --- Comment #1 from Daniel Krügler --- The example looks invalid to me according to [expr.prim.lambda.capture] p7 b (7.1), because the local variable bj is odr-used in the lambda expression [](int bk) { a::ac(bk, bj); }; This is so, because the called function template template void ac(b, const b &); attempts to bind its second argument by reference.