constexpr函数不应包含:
非文字类型变量的定义
但是在这个答案中,lambda被定义为一个:https://stackoverflow.com/a/41616651/2642059
template <typename T>
constexpr auto make_div(const T quot, const T rem)
{
return [&]() {
decltype(std::div(quot, rem)) result;
result.quot = quot;
result.rem = rem;
return result;
}();
}
Run Code Online (Sandbox Code Playgroud)
在我的评论中,我定义了div_t一个:如何初始化div_t对象?
template <typename T>
constexpr decltype(div(T{}, T{})) make_div(const T quot, const T rem)
{
decltype(div(T{}, T{})) x{};
x.quot = quot;
x.rem = rem;
return x;
}
Run Code Online (Sandbox Code Playgroud)
究竟是什么意思禁止"非字面型变量的定义"?
Visual Studio 2015将不允许我对a的定义,div_t但我发现在lambda中包含这些非法行为并执行它是允许的,这是荒谬的.我想知道哪个编译器在div_t定义方面表现正常.