Je sais qu'il est généralement impossible de réinitialiser une référence après qu'elle ait déjà été initialisée.
Cependant, j'ai essayé le code suivant et il s'avère qu'il fonctionne à la fois sur clang++ et g++.
Ma question est la suivante : est-ce que ce qui suit est un C++ valide (défini par le comportement) ?
std::string x = "x";
std::string y = "y";
std::string i = "i";
std::string j = "j";
// now references to x, y
std::pair<std::string &, std::string &> p { x, y };
p.first = "1"; //changes x
p.second = "2"; //changes y
// now references to i, j
new (&p) std::pair<std::string &, std::string &> {i, j};
p.first = "1"; //changes i
p.second = "2"; //changes j
Le code ci-dessus fonctionne sur g++ et clang++, mais est-il bon en C++ ? Merci.