首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不为emplace()定义构造函数的解决方法

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

Stack Overflow用户
提问于 2018-08-15 03:31:52
回答 1查看 101关注 0票数 1

从C++11开始,我们进行了聚合初始化:

代码语言:javascript
复制
struct S {
    int count;
    double value;
};
S s{2, 3.0};

但为了完成这项工作:

代码语言:javascript
复制
vector<S> v;
v.emplace_back(2, 3.0);

我们需要无缘无故地手动编写一个构造函数:

代码语言:javascript
复制
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?是相关的,但不提供解决方法。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51848574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档