【发布时间】:2019-08-08 21:58:34
【问题描述】:
将emplace_back 与某些结构S 的左值一起使用是否有意义:
像这样:
std::vector<S> v;
auto s = S(/*...*/);
v.emplace_back(s);
不仅仅是:
v.emplace_back(/* S constructor arguments */);
或者只是简单地滥用emplace_back,这只是因为const S&(因此是一个复制构造函数)是Args... args在emplace_back中的合法实例化,并且没有明确禁止?
【问题讨论】:
-
代码中是否需要
s?如果没有,那就是滥用。 -
你不会:
v.emplace_back(std::move(s));否则你还不如使用push_back。
标签: c++ variadic-templates emplace