std库'emplace'函数是否使用'std::in_place'标记 我想知道C++标准库 ESPORD < /COD>函数是否使用 STD::InPosie标签(以指示包含的对象应该被构建在适当的位置)?因为在c++11中引入了emplace函数,在c++17中引入了std::in_place。

std库'emplace'函数是否使用'std::in_place'标记 我想知道C++标准库 ESPORD < /COD>函数是否使用 STD::InPosie标签(以指示包含的对象应该被构建在适当的位置)?因为在c++11中引入了emplace函数,在c++17中引入了std::in_place。,c++,c++11,c++17,C++,C++11,C++17,emplace及其类似功能的整个要点是指示对象正在原地构造。不允许实现构造项并将其复制/移动到最终位置 构造函数中使用in_place的主要原因是构造函数必须使用重载解析来告诉您要调用哪个构造函数(对于any和variant,它们还指定要构造为模板参数的对象类型,因为不能向模板参数演绎之外的构造函数提供模板参数)。因此,如果您想在构造函数中具有类似于push\u back/emplace\u back的区别,则必须使用参数,而不是函数名。根据any@AlanBirtles这似乎是一个答案。

emplace及其类似功能的整个要点是指示对象正在原地构造。不允许实现构造项并将其复制/移动到最终位置


构造函数中使用
in_place
的主要原因是构造函数必须使用重载解析来告诉您要调用哪个构造函数(对于
any
variant
,它们还指定要构造为模板参数的对象类型,因为不能向模板参数演绎之外的构造函数提供模板参数)。因此,如果您想在构造函数中具有类似于
push\u back/emplace\u back
的区别,则必须使用参数,而不是函数名。

根据any@AlanBirtles这似乎是一个答案。