[Bug c++/83160] [8 regression] lvalue required as unary ‘&’ operand

2018-01-18 Thread nathan at gcc dot gnu.org
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

2018-01-18 Thread nathan at gcc dot gnu.org
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

2018-01-10 Thread rguenth at gcc dot gnu.org
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

2017-12-21 Thread nathan at gcc dot gnu.org
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

2017-12-03 Thread trippels at gcc dot gnu.org
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

2017-12-03 Thread trippels at gcc dot gnu.org
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

2017-11-27 Thread jakub at gcc dot gnu.org
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

2017-11-27 Thread rguenth at gcc dot gnu.org
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

2017-11-26 Thread daniel.kruegler at googlemail dot com
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.