gpt4 book ai didi

c++ - 不为 emplace() 定义构造函数的解决方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:31 24 4
gpt4 key购买 nike

<分区>

自 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?相关但不提供解决方法。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com