没有为emplace()[duplicate]定义构造函数的解决方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (32)

有自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<>, ...)工作。

是否有手动编写此构造函数的解决方法?

提问于
用户回答回答于

有一个隐式构造函数可用。

std::vector<S> v;
v.emplace_back(S{2, 3.0});

扫码关注云+社区

领取腾讯云代金券