Files
gcc-reflection/gcc/testsuite/g++.dg/cpp1y/lambda-generic-const9.C
Jason Merrill c59fa7eac4 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
2019-03-26 12:02:19 -04:00

17 lines
224 B
C

// PR c++/86429
// { dg-do compile { target c++14 } }
struct A
{
int i;
constexpr int f(const int&) const { return i; }
};
void g()
{
constexpr A a = { 42 };
[&](auto x) {
constexpr auto y = a.f(x);
}(24);
}