C++ 返回右值引用的原因

C++ 返回右值引用的原因,c++,c++11,forwarding-reference,C++,C++11,Forwarding Reference,我看到一个类的定义如下: 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::forwa

我看到一个类的定义如下:

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_;
};
class-Foo{
公众:
模板

Foo&&addElement(Args&&…Args){那是因为
std::unique_ptr
不可复制,但只能移动,但我不明白为什么
addElement
应该返回对象本身。我会使用
void
return。这是一种不好的做法,不要写这个。你会得到这样的无声移动。你是什么意思?我不明白它为什么返回Foo&。我认为returning void更好。同意吗?@路人你是说我的例子是坏习惯还是Henri说的不好?返回引用并不是闻所未闻的。它允许
one.to().chain().calls()调用;
-在我看来,似乎是谁编写了允许链接的代码,但后来被误解,认为他们需要返回一个右值引用,因为指针是唯一的。