完美转发 - 这是什么一回事?

时间:2011-07-26 11:22:55

标签: c++11 terminology perfect-forwarding

  

可能重复:
  Advantages of using forward

有人可以向我解释一下完美的转发是什么意思吗?

2 个答案:

答案 0 :(得分:40)

http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

  

为什么这有用?嗯,这意味着函数模板可以将其参数传递给另一个函数,同时通过使用std :: forward保留函数参数的左值/右值。这称为“完美转发”,避免过度复制,并避免模板作者必须为左值和右值引用写入多个重载。

答案 1 :(得分:8)

引用Session Announcement: Adventures in Perfect Forwarding

  

完善转发是一种重要的C ++ 0x技术   右值参考。它允许自动移动语义   应用,即使移动的来源和目的地是   通过介入函数调用分开。常见的例子包括   构造函数和setter函数,用于转发它们收到的参数   他们正在初始化或设置的类的数据成员,如   以及make_shared等标准库函数   “完美 - 转发”它对类构造函数的论证   对象即将创建的shared_ptr指向。