所以我最近了解了通用引用和引用折叠。
假设我有这样的 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++ ×1