任何人都可以解释当前C ++ 0x标准草案的这一段吗?

时间:2011-04-15 12:58:27

标签: c++ scope c++11 standards

任何人都可以从ISON3242§3.3.3,第二点

解释这个陈述
  

函数定义(8.4)中函数参数名称 (包括一个出现在lambda声明符中)或函数本地预定义变量 的潜在范围开始在宣言时。如果函数具有函数try块,则参数 或函数本地预定义变量 的潜在范围在最后一个关联的处理程序的末尾结束,否则它在函数定义的最外面的块的末尾结束。参数名称不得在函数定义的最外层块中重新声明,也不得在与函数try-block关联的任何处理程序的最外层块中重新声明。

ISO标准2003说:

  

函数定义(8.4)中函数参数名称的潜在范围从声明点开始。如果函数具有函数try-block,则参数的潜在范围在最后一个关联的处理程序的末尾结束,否则它在函数定义的最外面的块的末尾结束。参数名称不得在函数定义的最外层块中重新声明,也不得在与函数try-block关联的任何处理程序的最外层块中重新声明。

这些陈述的实际差异是什么?

任何人都可以用示例/程序来解释上面添加的内容......?

我注意到它属于函数本地预定义变量实际上他说的是什么..关于这个?

1 个答案:

答案 0 :(得分:4)

这些更改是“函数本地预定义变量”的添加,它是C ++ 0x的新增内容。它们是隐式定义的静态变量,可在函数中使用。标准草案定义了一个名为__func__的函数,它给出了函数的名称,并允许实现添加更多自己的函数。这一段现在说它们在函数参数名称的任何地方都可用。