ラムダ式を使って関数の引数からconstexpr変数を定義できたことに関する質問
C++17の以下のコードについて質問です。
#include <iostream>
template <typename F>
auto func(F f)
{
constexpr auto x = f();
return x;
}
int main()
{
auto x = func( [](){ return "abc"; } );
std::cout << x << std::endl;
}
このコードがg++7.2.0およびclang5.0.0、-std=c++1z -Wall -Wextra -pedantic
で警告なくコンパイルが通ったのですが、ラムダ式を渡してfuncの引数からconstexpr変数を定義できていることについて、C++17の規格上、不適格や未定義動作等になっているかいないかどうかをご教示いただきたく存じます。
よろしくお願いします。