小编Ant*_*oxo的帖子

C++ 通过 const ref 与 universal ref 传递

所以我最近了解了通用引用和引用折叠。

假设我有这样的 max 函数的两种不同实现。

template<class T>
T&& max(T&& a, T&& b)
{
    return (a < b) ? b : a;
}

template<class T>
const T& max(const T& a, const T& b)
{
    return (a < b) ? b : a;
}
Run Code Online (Sandbox Code Playgroud)

一种版本通过 const 引用获取参数,另一种版本通过通用引用获取参数。

让我困惑的是什么时候应该使用它们。主要使用 const 传递,以便您可以将临时变量绑定到它。

在 stl 中也有不同的用途。std::move 采用通用引用,而 std::max 采用 const ref。

什么情况下应该使用两者?

假设我想在返回时避免复制或在返回时保留引用。函数的 const 和非常量版本是否有意义?

c++

16
推荐指数
1
解决办法
1044
查看次数

标签 统计

c++ ×1