<分区>
自 C++11 以来我们有聚合初始化:
struct S {
int count;
double value;
};
S s{2, 3.0};
但为了完成这项工作:
vector<S> v;
v.emplace_back(2, 3.0);
我们无缘无故需要手动写一个构造器:
struct S {
int count;
double value;
S(int count, double value): count(count), value(value) {}
};
我们还需要 optional(in_place, ...)
的构造函数和 variant(in_place_type<>, ...)
去工作。
是否有不手动编写此构造函数的解决方法?
它不添加任何信息,只是重复已经存在的内容两次。编译器也能够像聚合初始化那样自己编写它。
我能够向 Egg 的变体添加新的构造函数,这允许这样做,但我们可以在不修改容器源代码的情况下做一些事情吗?
编辑:这个问题:Why doesn't emplace_back() use uniform initialization?相关但不提供解决方法。