Я вижу класс, определенный следующим образом:
class Foo {
public:
template <typename T, typename... Args>
Foo&& addElement(Args&&... args) { <--- why do we return Foo&&
elements_.emplace_back(
std::make_unique<T>(std::forward<Args>(args)...));
return std::move(*this);
}
private:
std::vector<std::unique_ptr<Bar>> elements_;
};
Я не могу придумать веских причин для возвращаемого типа функции addElement()
. Имеет ли смысл возвращать ссылку на rvalue или это не очень хорошая идея? Если да, то какова потенциальная причина для этого?