std库`emplace`函数是否使用`std::in_place`标签

Har*_*rry 3 c++ c++11 c++17

我想知道 C++ 标准库emplace函数是否使用std::in_place标签(以指示应就地构造所包含的对象)?因为emplace函数是在 c++11 和std::in_placec++17 中引入的。

Nic*_*las 8

整个点emplace及其同类,并且是指示所述对象被就地被构造。不允许实现构造项目并将其复制/移动到其最终位置。

in_place在构造函数中使用的主要原因是因为构造函数必须使用重载解析来告诉您打算调用哪个构造函数(对于anyvariant,它们还指定要构造的对象类型作为模板参数,因为您不能向构造函数提供模板参数在模板参数推导之外)。因此,如果您想push_back/emplace_back在构造函数中进行类似区分,则必须使用参数而不是函数名称来实现。