在 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
中的引用。我们将来可能会得到它们。
我在尝试将引用对象作为函数传递给 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
中的引用。我们将来可能会得到它们。