[c++] ¿Cómo es "int main () {(([] () {}) ());}" C ++ válido?



0 Answers

Question

Recientemente encontré el siguiente código esotérico.

int main(){(([](){})());}

Reformatelo de la siguiente manera para hacerlo más legible:

int main(){
    (([](){})());   //  Um... what?!?!
}

Pero no entiendo cómo (([](){})()) es un código válido.

  • No se parece a la sintaxis del puntero de función.
  • No puede ser un truco de sobrecarga del operador. El código se compila como es.

Google no ayudó mucho con esta búsqueda de todos los símbolos. Pero compila en Visual Studio 2010 y no genera nada. No hubo errores ni advertencias. Entonces parece un código válido.

Nunca he visto ningún código válido que sea tan extraño fuera de los punteros Javascript y C.

¿Alguien puede explicar cómo es esto válido C ++?






Related