Commit 25139006 by Paolo Carlini Committed by Paolo Carlini

re PR c++/78131 (Inconsistent evaluation for `constexpr` lambdas in templates…

re PR c++/78131 (Inconsistent evaluation for `constexpr` lambdas in templates between `static_assert`, `if constexpr(…)` and `constexpr` variables)

2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/78131
	* g++.dg/cpp1z/constexpr-lambda17.C: New.

From-SVN: r253431
parent 968e56bf
2017-10-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/78131
* g++.dg/cpp1z/constexpr-lambda17.C: New.
2017-10-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/78018
* g++.dg/cpp1y/lambda-generic-78018.C: New.
......
// PR c++/78131
// { dg-options -std=c++17 }
template <typename TF>
constexpr auto f(TF)
{
return [](auto...) constexpr { return true; };
}
// Compiles and works as intended.
template <typename T0>
void ok_0(T0)
{
static_assert(f([](auto x) -> decltype(x){})(T0{}));
}
// Compiles and works as intended.
template <typename T0>
void ok_1(T0)
{
constexpr auto a = f([](auto x) -> decltype(x){})(T0{});
if constexpr(a) { }
}
// Compile-time error!
template <typename T0>
void fail_0(T0)
{
if constexpr(f([](auto x) -> decltype(x){})(T0{})) { }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment