§5.3.1 operadores unarios, Sección 3tomar la dirección de un objeto temporal
El resultado de la & operador unitario es un puntero a su operando. El operando debe ser un lvalue o una identificación válida.
¿Qué significa "shall be" en este contexto? ¿Significa que es un error tomar la dirección de un temporal? Me preguntaba, porque g ++ sólo me da una advertencia, mientras que Comeau se niega a compilar el programa siguiente:
#include <string>
int main()
{
&std::string("test");
}
g ++ advertencia: taking address of temporary
comeau error: expression must be an lvalue or a function designator
¿El Alguien tiene un compilador de Microsoft u otros compiladores y puede probar este programa, por favor. Gracias por adelantado.
eso es interesante. No tengo ninguna experiencia con Comeau, pero me pregunto si se está confundiendo debido a la plantilla. ¿Qué sucede si solo prueba algo como & array [0]; donde matriz es alguna matriz creada? – Casey
& Casey & array [0] es perfectamente legal - array [0] es un lvalue –