Не является ли оптимизация возвращаемого значения (RVO) ошибкой?

Я, возможно, задаю глупый вопрос, но я посмотрел на странице Википедии для RVOВот и не мог перестать задаваться вопросом, если это поведение неправильно. Я попробовал это на своей машине, и RVO полностью задействован, несмотря на уровень оптимизации. Что если бы было что-то на самом делеBIG происходит в конструкторе? Я знаю, что не должно, но что если? Я не могу понять, почему RVO все еще происходит, когда в конструкторе есть побочные эффекты.

РЕДАКТИРОВАТЬ:-fno-elide-constructors кажется, чтобы остановить RVO. Но вопрос остается.

РЕДАКТИРОВАТЬ 2: На более серьезной ноте, сколько людей знают о чем-то вроде этого? Это может быть в стандарте, но это все еще очень уродливая особенность, как я вижу. По крайней мере, компиляторы должны отключить его по умолчанию и предоставить переключатель для людей, которые знают об этом. :)

РЕДАКТИРОВАТЬ 3: Я все еще настаиваю, что это действительно плохо. :). Я не думаю, что знаю какие-либо другие языковые ограничения, подобные этим, которые прямо противоречат синтаксису языка. Все остальное выдает ошибки компилятора или компоновщика, верно?

Ответы на вопрос(3)

Ваш ответ на вопрос