正如我所看到的,一般规则是根本不从函数返回 r 值引用(罕见的特殊情况除外)。但是类方法呢?
std::optional<T>::operator*()
C++ 标准库中有一个从类的 r-value ref-qualified 方法(和类std::optional<T>::value()
的方法)返回 r-value 引用的示例std::optional<T>
。请参阅C++17 标准的23.6.3 类模板可选 [optional.optional]和23.6.3.5 Observers [optional.observe]部分:
// 23.6.3.5, observers constexpr T&& operator*() &&; constexpr const T&& operator*() const&&; constexpr T&& value() &&; constexpr const T&& value() const&&;