为什么海湾合作委员会说“不再支持命名的返回值”?

时间:2010-11-22 14:36:34

标签: c++ gcc

我不小心将函数定义的左大括号放在return语句

之后
int id(int k) return k; { }

但GCC回答了一个奇怪的错误消息

  

错误:不再支持命名返回值

任何人都可以解释这个奇怪的功能可能是什么?我从来没有听说过。

3 个答案:

答案 0 :(得分:39)

参见here - 通过在函数头中明确定义命名返回值来实现早期的NRVO。

添加了here - GCC 3.1发布系列,为没有此扩展的NRVO提供原生支持。

简要剪切和粘贴上下文:

  

G ++现在支持“命名返回”   价值优化“:代码

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

G ++将在回报中分配一个   值槽,以便返回   无操作。为了这个工作,所有回报   函数中的语句必须返回   相同的变量。

答案 1 :(得分:4)

请参阅here

他们是removed in gcc3.4

答案 2 :(得分:2)