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




0 Answers

examples c# std::function

Recientemente me encontré con la siguiente pieza de código esotérico.

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

Reformatéelo de la siguiente manera para hacerlo más legible:

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

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

  • No parece la sintaxis de 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 se compila en Visual Studio 2010 y no produce nada. No hubo errores, ni advertencias. Así que parece un código válido.

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

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




Related