鉴于以下代码,我很惊讶try_emplace
无法使用 main 函数第一行中演示的默认构造函数,而是抱怨没有匹配的函数调用Element::Element(double, double)
. 我是否误解了编译器创建默认构造函数或使用的方式try_emplace
?我当然可以通过为 定义一个所有参数 ctors 来让这段代码工作Element
,但这似乎是多余的。
#include <string>
#include <map>
struct Element
{
double a;
double b;
};
int main(int argc, char** argv)
{
Element e {2.0, 3.0};
std::map<std::string, Element> my_map;
my_map.try_emplace("hello", 2.0, 3.0);
return 0;
}