在 std::optional 内保存参考对象

hold reference object inside std::optional

我在尝试将引用对象作为函数传递给 std::optional 时遇到问题 argument.Does 它不支持存储引用对象? 例子-

void fun(std::optional<ClassA& obj>)

这个错误到底是什么意思 - static_assert failed due to requirement '!is_reference

static_assert(!is_reference_v<_Tp>)

cpp reference 说得很清楚:

There are no optional references; a program is ill-formed if it instantiates an optional with a reference type. Alternatively, an optional of a std::reference_wrapper of type T may be used to hold a reference.

所以按照建议使用 std:reference_wrapper

脚注:cpp 委员会中有动议启用 std::optional 中的引用。我们将来可能会得到它们。