Je lis quelque chose sur la résolution de surcharge et j'ai trouvé quelque chose qui me dérange ... Dans le code suivant:Promotion intégrale lors de la transmission et du renvoi d'argument par référence?
int const& MaxValue(int const& a, int const& b)
{
return a > b ? a : b;
}
void SomeFunction()
{
short aShort1 = 3;
short aShort2 = 1;
int const & r2 = MaxValue(aShort1, aShort2); // integral promotion
//is it safe to pass r2 around before function SomeFunction completes
// CallSomeOtherFunctionThatCallsSomethingElse(r2);
}
Ma compréhension est que deux années int temporaires sont créés et ils sont alloués sur la pile appartenant à SomeFunction. Donc, lorsque MaxValue retourne, r2 référençant à l'une de ces variables temporaires (dans ce cas, celle qui contient la valeur 3). Ainsi, il devrait être prudent de faire circuler r2.
La question est, si ma compréhension est bonne, est-ce un comportement standard (s'il vous plaît vérifier)? Si non, veuillez expliquer ce qui se passe dans le code ci-dessus.
Merci beaucoup
Je suis d'accord avec votre réponse, et la qualification pour cela. –