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()调用;
-在我看来,似乎是谁编写了允许链接的代码,但后来被误解,认为他们需要返回一个右值引用,因为指针是唯一的。