标签: c++ gcc
我不小心将函数定义的左大括号放在return语句
int id(int k) return k; { }
但GCC回答了一个奇怪的错误消息
错误:不再支持命名返回值
任何人都可以解释这个奇怪的功能可能是什么?我从来没有听说过。
答案 0 :(得分:39)
参见here - 通过在函数头中明确定义命名返回值来实现早期的NRVO。
添加了here - GCC 3.1发布系列,为没有此扩展的NRVO提供原生支持。
简要剪切和粘贴上下文:
G ++现在支持“命名返回” 价值优化“:代码 A f () { A a; ... return a; } G ++将在回报中分配一个 值槽,以便返回 无操作。为了这个工作,所有回报 函数中的语句必须返回 相同的变量。
G ++现在支持“命名返回” 价值优化“:代码
A f () { A a; ... return a; }
G ++将在回报中分配一个 值槽,以便返回 无操作。为了这个工作,所有回报 函数中的语句必须返回 相同的变量。
答案 1 :(得分:4)
请参阅here
他们是removed in gcc3.4
答案 2 :(得分:2)
这是GCC extension,removed in GCC 3.4。