https://www.cnblogs.com/shadow-lr/p/14748272.html
// FUNCTION TEMPLATE move
template <class _Ty>
_NODISCARD constexpr remove_reference_t<_Ty>&& move(_Ty&& _Arg) noexcept {
return static_cast<remove_reference_t<_Ty>&&>(_Arg);
}
-
我看这个形式是完全符合万能引用的,所以 std::move 理论上来说只需要这一个实现就行了,是吗?因为任何引用类型(左值引用、右值引用)都可以被 万能引用接受
- (而且我理解,一个非引用类型也可以被万能引用接受吧?就相当于
T&去接一个T,这是另一个问题)如果可以的话,那万能引用就是任何类型都能接得。
- (而且我理解,一个非引用类型也可以被万能引用接受吧?就相当于
-
为什么 std::move 要加 constexpr 呀,那返回值类型不就变成了
const T&&,这是一个底层 const ,具有底层 const 的引用在传参过程是不能丢失掉底层 const 的,所以 这不是减少了 std::move 返回值的使用范围了吗?- 而且我看其他博客里,std::move 是没有带 constexpr 的,所以到底带不带?