我的代码大致如此:
struct Foo {
std::string str;
//...
};
void foo(Foo&& val)
{
std::unordered_map<std::string, Foo> m;
m.emplace(val.str, move(val));
}
emplace
调用是否在原始值为val
的密钥处插入val.str
的值,或者是否发生(未指定的)移动值{ {1}}用作密钥?
由于val.str
的{{1}}是unordered_map
,我认为可以归结为value_type
成员可以安排的顺序问题。是否保证在std::pair
之前发生std::pair
或允许在.first
之前分配.second
的实施?