c++ syntax brackets

Significado de doble corchete "[[foo()]] nombre de tipo;" sintaxis en c++?



syntax brackets (1)

En this artículo sobre cómo evitar el uso compartido falso, se presenta el siguiente código cortado para alineación:

// C++ (using C++0x alignment syntax) template<typename T> struct cache_line_storage { [[ align(CACHE_LINE_SIZE) ]] T data; char pad[ CACHE_LINE_SIZE > sizeof(T) ? CACHE_LINE_SIZE - sizeof(T) : 1 ]; };

¿Cuál es el significado de la línea 4? Nunca he visto esta sintaxis de doble corchete antes.


Esa es la sintaxis del especificador de attribute . Se introdujo como una sintaxis unificada para acceder a lo que antes eran extensiones específicas del compilador (ahora algunas están estandarizadas).

En este caso, el código le indica al compilador que alinee los data con los bytes CACHE_LINE_SIZE .