【发布时间】:2023-03-11 21:05:02
【问题描述】:
正如pfultz2 所示,有一种解决方法来静态初始化 lambda 函数。其中一个步骤提到取消引用指向 lambda 函数类型的指针的 nullptr。
template <typename T> typename std::remove_reference <T>::type * addr (T && t)
{
return & t;
}
constexpr auto f = true ? nullptr : addr ([] (int arg) { return arg + 1; });
int main ()
{
assert (((*f) (1) == 2));
}
查看规范和另一个问题C/C++ nullptr dereference 我很难理解*f 是否是未定义的行为。规范中的哪些部分会使这种 not 行为未定义?
【问题讨论】:
标签: c++11 lambda static-initialization