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
.