Je pense que c'est parce que l'expression std::move(comp.data_) est exécutée avant celle de gauche, donc si comp.data_ est un unique_ptr il est vide après. En C++17 l'ordre des expression de gauche à droite est garanti. Dans le doute, faire des variables locales avant.
Exemple de cas totalement dangereux : f(g(++i), h(++i))
git is great because Linus did it, mercurial is better because he didn't.
Je pense que c'est parce que l'expression std::move(comp.data_) est exécutée avant celle de gauche, donc si comp.data_ est un unique_ptr il est vide après. En C++17 l'ordre des expression de gauche à droite est garanti. Dans le doute, faire des variables locales avant.
Exemple de cas totalement dangereux : f(g(++i), h(++i))
J'me doutais bien que c'etait quelque chose du genre Merci de la confirmation.
std::pair + std::unique_ptr
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.