• # Sequence point

    Posté par . En réponse au journal C++, surcharge d'opérateur, ordre d'évaluation. Évalué à 4. Dernière modification le 21 février 2020 à 15:05.

    Ce que tu demandes n'est pas lié à la surcharge d'opérateur.

    Le standard précise que tous les effets de bord d'un statement doivent être terminés au point de séquence (ici, le ;). Mais sans préciser l'ordre d'évaluation. Notamment, = n'est pas un point de séquence.

    La ligne

    m[1] = m.size();

    Peut donc soit d'abord évaluer m[1], soit m.size(), avant d'effectuer l'affectation.

    Un exemple classique est i = i++;

    https://en.wikipedia.org/wiki/Sequence_point