¿Qué es esta expresión sonriente con barba: "<:]{%>"?
Me encontré con el siguiente programa, que se compila sin errores ni advertencias:
int main(){
<:]{%>; // smile!
}
Ejemplo vivo.
¿Qué hace el programa y cuál es esa expresión sonriente?
El programa utiliza dígrafos para representar lo siguiente:
[] {};
Esta es una expresión lambda que no hace nada. Los símbolos correspondientes tienen estos equivalentes:
<: = [
%> = }
Aunque generalmente son innecesarios hoy en día, los dígrafos son útiles cuando su teclado carece de ciertas teclas necesarias para usar el conjunto de caracteres fuente básico de C++, es decir, los gráficos. La combinación de los caracteres que componen un dígrafo se procesa como un único token. Esto, a su vez, compensa los teclados u otro hardware o software insuficientemente equipados.
Esa es una lambda vacía que usa un disfraz de dígrafo. Las lambdas normales no tienen barba.
El programa utiliza dígrafos , que permiten la programación en C++ con teclados (o codificaciones de texto) que pueden no tener los caracteres que normalmente usa C++.
El código resuelve esto:
int main(){
[]{}; // smile!
}