Disons que nous avons le code suivant:
Il semble que le compilateur ait deux approches ici:
a) NRVO : Détruire x, puis construire f() à la place de x.
(b) Déplacer : Construire f() dans l’espace temporaire, déplacer f() dans x, détruire f().
Le compilateur est-il libre d’utiliser l’une ou l’autre approche, selon la norme ?