En el programa que estoy codificación, una de mis declaraciones de funciones dice así:¿Debo usar __restrict en las referencias?
bool parse(const sentence & __restrict sentence)
{
// whatever
}
Cuando puedo compilar el código con Microsoft Visual Studio 2010 Express, el compilador se queja: C4227
advertencia: anacronismo utilizado: calificadores de referencia se ignoran
Sin embargo, this page de la documentación de GCC dice:
Además de permitir punteros restringidos, puede especificar referencias restringidas, que indican que la referencia no tiene alias en el contexto local.
Y la misma página da un ejemplo muy explícito:
void fn (int *__restrict__ rptr, int &__restrict__ rref)
{
/* ... */
}
¿He entienden mal la advertencia de MVSC? ¿o debería transformar todas mis referencias en punteros para que se aplique __restrict
?
¿Cuál es el punto de comparar MSVC y GCC aquí? '__restrict' es una ** extensión de proveedor **, por lo que debe cumplir las reglas de cada proveedor. –