Me deparei com o seguinte programa, que compila sem erros ou mesmo avisos:
int main(){
<:]{%>; // smile!
}
O que o programa faz e qual é essa expressão sorridente?
Me deparei com o seguinte programa, que compila sem erros ou mesmo avisos:
int main(){
<:]{%>; // smile!
}
O que o programa faz e qual é essa expressão sorridente?
Respostas:
É um lambda vazio usando um disfarce de dígrafo. Lambdas normais não têm barbas.
fonte
O programa usa dígrafos para representar o seguinte:
Esta é uma expressão lambda que não faz nada. Os símbolos correspondentes têm estes equivalentes:
Embora eles geralmente sejam desnecessários hoje em dia, os digrafos são úteis quando o teclado não possui certas teclas necessárias para usar o conjunto de caracteres de origem básico do C ++, ou seja, os gráficos. A combinação dos caracteres que compõem um dígrafo é processada como um único token. Isso, por sua vez, compensa os teclados insuficientemente equipados ou outro tipo de hardware ou software.
fonte
O programa está usando dígitos , que permitem a programação C ++ com teclados (ou codificações de texto) que podem não ter os caracteres que o C ++ normalmente usa.
O código resolve isso:
fonte
É basicamente uma expressão Lambda (a expressão Lambda é um dos recursos do C ++ 11 ) usando digrafos (ambos os digrafos e trigramas funcionam em C ++):
Usando apenas dígrafos:
Misturando-os com Trigraphs:
fonte