2011-06-06 27 views
17

me encontré con el siguiente código en un archivo (se ve como archivo de cabecera) iomanip de gcc 4.5.1:devolver un alcance en C++

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

¿cuál es la definición del lenguaje de devolver un ámbito de aplicación (bloque)?

Respuesta

17

Parece la nueva sintaxis para Uniform initialization en C++ 0x para mí.

+1

Creo que es simplemente normal inicialización estructura (C deben ser válidos también). – Joseph

+1

No necesariamente. Si '_Setbase' es plain-old-data, no necesita C++ 0x. De hecho, ese encabezado se usa incluso cuando las características de C++ 0x no están activadas, por lo que no puede confiar en ellas. –

+3

No puede hacer eso en C++ 03, incluso con un tipo POD, ya que no tiene permitido usar el inicializador agregado en este contexto. Puede verificarlo usted mismo: http://ideone.com/PHX5y, la línea comentada funcionaría en C++ 03. –

6

Esto no devuelve un bloque. Esto construye un objeto de tipo _Setbase, definida en el mismo archivo de cabecera como

struct _Setbase { int _M_base; };