PR c++/86429 - constexpr variable in lambda.
authorJason Merrill <jason@redhat.com>
Tue, 26 Mar 2019 16:02:19 +0000 (12:02 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 26 Mar 2019 16:02:19 +0000 (12:02 -0400)
commitc59fa7eac4a82af74a5cdfe620dca27a45d16843
tree45250c1852f1bfe23db6d53a66beb6a39faac3e9
parent7ac205673caade367552a567a98e27940f17cf35
PR c++/86429 - constexpr variable in lambda.

When we refer to a captured variable from a constant-expression context
inside a lambda, the closure (like any function parameter) is not constant
because we aren't in a call, so we don't have an argument.  So the capture
is non-constant.  But if the captured variable is constant, we might be able
to use it directly in constexpr evaluation.

PR c++/82643
PR c++/87327
* constexpr.c (cxx_eval_constant_expression): In a lambda function,
try evaluating the captured variable directly.

From-SVN: r269951
gcc/cp/ChangeLog
gcc/cp/constexpr.c
gcc/testsuite/g++.dg/cpp1y/lambda-generic-const10.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1y/lambda-generic-const9.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C [new file with mode: 0644]