не обязан отработать в данной ситуации? тогда исключение упадет внутри метода pop(), и все будет хорошо.
в стандарте [class.copy.elision] формулировки вроде "an implementation is allowed to omit...", "copy elision is permitted in the following circumstances..." - мол пусть компилятор сам решает, оптимизировать код или нет
п.с. gcc на -O0 деалет одно копирование в данном примере:
https://godbolt.org/z/qKPhhhT19
В С++ нет обязательного nrvo
понятно, спасибо. я почему-то раньше думал, что elision обязательная фича языка😞
Обсуждают сегодня