2011-06-06 161 views
17

我遇到下面的代码在一个文件中(看起来像头文件),GCC 4.5.1了iomanip:用C返回范围++

inline _Setbase 
setbase(int __base) 
{ return { __base }; } 

什么是返回一个范围(块)的语言定义是什么?

回答

17

看起来像C++ 0x中的Uniform initialization的新语法给我。

+1

我认为这只是正常的结构初始化(应该是有效的C以及)。 – Joseph 2011-06-06 10:19:03

+1

不一定。如果'_Setbase'是纯数据,它不需要C++ 0x。事实上,即使在C++ 0x功能未打开时也使用该头文件,因此它不能依赖它们。 – 2011-06-06 10:22:07

+3

即使使用POD类型,您也无法在C++ 03中执行此操作,因为您不允许在此上下文中使用聚合初始值设定项。您可以检查自己:http://ideone.com/PHX5y,注释行将在C++ 03中工作。 – 2011-06-06 10:33:11

6

这不是返回一个块。这种构造_Setbase类型的对象,在相同的头文件中定义为

struct _Setbase { int _M_base; };