The signature of the emplace_back method for std::vector has been updated to return a reference:
template< class... Args >
constexpr reference emplace_back( Args&&... args );
While I can find many (older) posts on why this isn't needed or even a bad design I cannot find sources on the rationale for the change.
- Why did this update happen? If the apparent "gives an easier to use interfece" holds, why didn't
push_backget an update as well? - Doesn't it complicate exception-safety requirements by complicating the interface?
I'm also searching for the paper that introduced the change, if you could point me to it, it would be appreciated.