J'ai lu Order of evalution de cppreference, mais je n'ai trouvé aucune règle concernant cette situation. Est-ce que cela signifie qu'il n'y a pas de relation séquence-avant ou est-ce que j'ai manqué quelque chose? Merci.Existe-t-il une relation séquence-avant entre l'évaluation des lhs de l'opérateur d'accès membre et les effets secondaires de ses arguments?
L'extrait de code suivant donne un exemple.
#include <memory>
struct Foo {
void func(std::unique_ptr<Foo>) {}
};
int main() {
auto ptr = std::make_unique<Foo>();
ptr->func(std::move(ptr)); // Is this valid?
return 0;
}
Techniquement, vous citez [expr.call], en décrivant uniquement les expressions d'appel de fonction. Mais cette expression postfix spécifique se trouve être 'ptr-> func', donc elle est en effet séquencée avant la seule expression de la liste d'expressions – Cubbi
@Cubbi Oups, ouais c'était une erreur. Bien que je me rappelle avoir vu la proposition originale en disant quelque chose comme ça. –