新的 emplace_back 签名

Lor*_*ins 6 c++ c++-standard-library language-lawyer

签名的的emplace_back方法std::vector已经更新到返回引用:

template< class... Args >
constexpr reference emplace_back( Args&&... args );
Run Code Online (Sandbox Code Playgroud)

虽然我可以找到许多(较旧的)帖子,说明为什么不需要这样做,甚至是糟糕的设计,但我找不到有关更改理由的来源。

  • 为什么会发生此更新?如果明显的“提供更易于使用的干扰”成立,为什么不push_back得到更新?
  • 它不会通过使接口复杂化而使异常安全要求复杂化吗?

我也在寻找介绍更改的论文,如果您能指点我,将不胜感激。