mercredi 1 juin 2016

Rvalue reference argument "validity" after std::map::emplace in a collision [duplicate]

This question already has an answer here:

Assume I have the following

std::map<int, std::string> m;
std::string b = "bar";

If I emplace-move b into m like this:

auto result = m.emplace(0, std::move(b));
if (!result.first) {
    // Here
}

Is b guaranteed to still contain "bar" at // Here? I have no doubt that any sane implementation of std::map::emplace will leave b alone when it is not being used to assign in the map, but is this guaranteed by the standard?

Aucun commentaire:

Enregistrer un commentaire