Natknąłem się na następujący program, który kompiluje się bez błędów, a nawet ostrzeżeń:
int main(){
<:]{%>; // smile!
}
Co robi program i jakie jest to wyrażenie buźki?
Natknąłem się na następujący program, który kompiluje się bez błędów, a nawet ostrzeżeń:
int main(){
<:]{%>; // smile!
}
Co robi program i jakie jest to wyrażenie buźki?
Odpowiedzi:
To pusta lambda z przebraniem digrafa. Normalne lambdy nie mają brody.
źródło
Program wykorzystuje digraphy do reprezentowania następujących elementów:
To wyrażenie lambda, które nic nie robi. Odpowiednie symbole mają następujące odpowiedniki:
Mimo że są one dziś na ogół niepotrzebne, digraphy są przydatne, gdy na klawiaturze brakuje pewnych klawiszy niezbędnych do korzystania z podstawowego źródłowego zestawu znaków C ++, a mianowicie graficznych. Kombinacja znaków tworzących wykrój jest przetwarzana jako pojedynczy token. To z kolei uzupełnia niewystarczająco wyposażone klawiatury lub inny sprzęt lub oprogramowanie.
źródło
Program wykorzystuje digraphy , które umożliwiają programowanie w C ++ za pomocą klawiatury (lub kodowania tekstu), które mogą nie mieć znaków, których zwykle używa C ++.
Kod rozwiązuje to:
źródło
Zasadniczo jest to wyrażenie Lambda ( wyrażenie Lambda jest jedną z funkcji C ++ 11 ) za pomocą digraphów (zarówno digraphs, jak i trigrafów działa na C ++):
Używając tylko digrafów:
Mieszanie ich z Trigraphs:
źródło