Je suis confus si l'extrait suivant foo
est garanti, c'est-à-dire si je suis autorisé à stocker des valeurs de retour de fonction comme références constantes?Référence renvoyant la valeur de la fonction
Je demande parce que la valeur de retour est stockée sur une pile-cadre, qui pourrait être invalide peu de temps après que la valeur a été retournée.
Foo getFoo() {
return Foo();
}
void bar() {
const auto& foo = getFoo();
// more function calls...
// is foo guaranteed to be valid?
}
Oui, c'est valide. –
Je voulais souligner un aspect différent de la question. Celui qui est marqué comme doublon et le lien de Herb Sutter n'aborde pas vraiment la perspective de la mémoire. Je suis vraiment curieux de savoir pourquoi l'objet référencé n'est pas écrasé lorsque de nouvelles stackframes sont allouées. – user695652
Je suppose que c'est une fonctionnalité définie par l'implémentation. –