https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118641
--- Comment #7 from mauro russo <ing.russomauro at gmail dot com> --- I tried to be clear since the words: <... the code destroys object a before returned object constructed in #1 ...> where having written "object a" instead of "object 'a'" might likely appear less clear. Anyway, you got the point. Note it was also clearly explained at https://cppquiz.org/quiz/question/323?result=OK&answer=bcad&did_answer=Answer, as well as in the text of the standard.