Push_back implementation via emplace_back

Suppose we want to create a C container similar to std::vector . It is a good idea to implement push_back by calling emplace_back , for example:

 template <typename T> class C { public: ... template <typename Args...> void emplace_back(Args&&... args) { ... // uses T(std::forward<Args>(args)...) internally } void push_back(T value) { emplace_back(std::move(value)); } ... }; 

or alternatively:

  template <typename U> void push_back(U&& value) { emplace_back(std::forward(value)); } 

?

+5
source share

Source: https://habr.com/ru/post/1270552/


All Articles