Files
gcc-reflection/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
Marek Polacek be515b4ce0 *.C: Use target c++17 instead of explicit dg-options.
* g++.dg/*.C: Use target c++17 instead of explicit dg-options.
	* lib/g++-dg.exp: Don't test C++11 by default.  Add C++17 to
	the list of default stds to test.

From-SVN: r265343
2018-10-20 17:21:19 +00:00

12 lines
454 B
C

// Testcase from P0170R1
// { dg-do compile { target c++17 } }
// 'v' & 'm' are odr-used but do not occur in a constant-expression within the nested
// lambda, so are well-formed.
auto monad = [](auto v) { return [=] { return v; }; };
auto bind = [](auto m) {
return [=](auto fvm) { return fvm(m()); };
};
// OK to have captures to automatic objects created during constant expression evaluation.
static_assert(bind(monad(2))(monad)() == monad(2)());