【发布时间】:2017-07-28 12:20:33
【问题描述】:
所有这三个容器都通过 const 引用而不是值或转发引用来接受函数对象。这导致需要将函数对象复制到容器的内部存储中(最多两次)。
复制函数对象两次是否有原因?而不是让用户能够传递任何类型的函数对象并将其构建到内部函子存储中?这样库就更通用了,给用户带来的惊喜也更少。
push_back() 函数中应用了相同的理念 - 它们有两个重载,一个带有 const 引用,一个带有 rvalue 引用,因为这让用户可以更好地控制他们是要移动值还是复制值.该库在一般情况下保持高效,无需对用例做出任何假设。
我怀疑这是自 C++11 之前的日子以来一直沿用的设计决策。改变这个对标准来说是一个不错的提议吗?
【问题讨论】:
标签: c++ c++11 c++14 move-semantics functor