Подтвердить что ты не робот

Почему GCC говорит, что "именованные возвращаемые значения больше не поддерживаются"?

Я случайно помещаю открытую фигуру в определение моей функции после оператора return

int id(int k) return k; { }

Но GCC ответил со странным сообщением об ошибке

ошибка: именованные возвращаемые значения больше не поддерживаются

Может кто-нибудь объяснить, что это за странная функция? Я никогда не слышал об этом.

4b9b3361

Ответ 1

См. здесь - ранняя реализация NRVO путем явного определения именованного значения return в заголовке функции.

Поддержка NRVO без этого расширения была добавлена ​​здесь - Серия выпусков GCC 3.1.

Краткая вырезка и вставка для контекста:

g++ теперь поддерживает "named return оптимизация значений": для кода типа

A f () {
  A a;
  ...
  return a;
}

g++ будет выделять a в обратном слот значения, так что возврат будет нет-op. Чтобы это сработало, все возвращаются утверждения в функции должны возвращаться одна и та же переменная.