¿Qué es esta expresión de sonriente con barba: "<:]{%>"?
Me encontré con el siguiente programa, que compila sin errores ni advertencias:
int main(){
<:]{%>; // smile!
}
¿Qué hace el programa y qué es esa expresión sonriente?
4 answers
Eso es una lambda vacía usando un disfraz de dígrafo. Las lambdas normales no tienen barba.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-01 00:56:06
El programa usa dígrafos para representar lo siguiente:
[] {};
Esta es una expresión lambda que no hace nada. Los símbolos correspondientes tienen estos equivalentes:
<: = [
%> = }
Aunque hoy en día son generalmente innecesarios, los dígrafos son útiles cuando su teclado carece de ciertas teclas necesarias para usar el conjunto de caracteres de origen básico de C++, a saber, las gráficas. La combinación de los caracteres que componen un dígrafo se procesa como un único token. Esto a su vez compensa para cualquier teclado insuficientemente equipado u otro hardware o software.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-03 15:17:03
El programa está utilizando dígrafos, que permiten la programación en C++ con teclados (o codificaciones de texto) que pueden no tener los caracteres que utiliza normalmente C++.
El código resuelve esto:
int main(){
[]{}; // smile!
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-22 14:47:24
int main(){ <:]{%>; // smile! }
Es básicamente una expresión Lambda (la expresión Lambda es una de las características de C++11) usando dígrafos (ambos dígrafos y trigrafos funcionan en C++):
[] {};
Usando solo dígrafos:
<:]<%};
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;
Mezclándolos con Trigraphs:
<:??)<%??>; // popeye
??(:>{??>; // pirate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-03 11:45:28