我正在查看 APIstd::optional<T>
on 参考参数 http://en.cppreference.com/w/cpp/utility/optional/value_or。我很好奇如何value_or
会工作。看看那里,似乎有两个重载:
template< class U >
constexpr T value_or( U&& value ) const&;
template< class U >
T value_or( U&& value ) &&;
什么是const&
and &&
尾随函数声明?将函数声明为有什么区别const
并将其声明为const&
?
函数后面的 & 意味着this
必须是左值,相反,双 & 符号意味着它必须是右值,const 只是表示它是不可修改的左值或右值
所以一个函数符合&
仅适用于可修改的 lval 并且如果符合条件&&
只适用于 rval。我猜一个const &&
真的没有意义,因为const &
可以绑定到临时变量,因此 const 限定符仅对 lval 执行任何操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)