Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在查看std::optional<T>cppreference的API 。我很好奇如何value_or工作。看那里,似乎有两个重载:
std::optional<T>
value_or
template< class U > constexpr T value_or( U&& value ) const&; template< class U > T value_or( U&& value ) &&;
const&函数声明和&&尾随是什么?const将函数声明为和将其声明为有什么区别const&?
const&
&&
const
函数后面的this& 表示它必须是左值,相反,双 & 表示它必须是 rval,const 只是表示它是不可修改的 lval 或 rval
this
因此,限定为的函数&仅适用于可修改的 lval,如果限定为&&仅适用于 rval。我猜 aconst &&真的没有意义,因为 aconst &可以绑定到一个临时的,所以 const 限定符只为 lval 做任何事情。
&
const &&
const &