2011-06-06 70 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; };