我在下面编写了用于重载运算符+=的C++代码,该代码接受作为引用的p1,然后返回p1。
template<typename T, typename T2>
inline auto operator+=(std::pair<T, T2>& p1, std::pair<T, T2> const& p2)
{
auto& [x1, y1] = p1;
auto& [x2, y2] = p2;
x1 += x2;
y1 += y2;
return p1;
}
我希望运算符+=返回一个引用,又名“std::pair
我的问题是,是否需要返回 decltype(auto),或者编译器是否推断出 auto 在这种情况下必须是引用,因为正在返回引用 p1 。 -- 根据我的理解,“auto”通常不会推断出参考。
我不清楚运算符+=返回右值而不是引用是否有意义。