natknąłem następującym programem, który kompiluje bez błędów czy nawet ostrzeżeń:Co to za uśmiech z brodą: "<:]{%>"?
int main(){
<:]{%>; // smile!
}
Co ma zrobić program, a co to jest wyrażenie buźkę?
natknąłem następującym programem, który kompiluje bez błędów czy nawet ostrzeżeń:Co to za uśmiech z brodą: "<:]{%>"?
int main(){
<:]{%>; // smile!
}
Co ma zrobić program, a co to jest wyrażenie buźkę?
To pusty lambda przy użyciu przeźroczowania digraficznego. Normalne lambdy nie mają brody.
Program korzysta digraphs reprezentować następujące:
[] {};
Jest to wyrażenie lambda, że nic nie robi. Odpowiednie symbole mają następujące odpowiedniki:
<: = [
%> = }
Choć generalnie są one niepotrzebne dziś digrafów są użyteczne, gdy klawiatura brakuje niektórych kluczy niezbędnych do korzystania z podstawowych zestaw znaków źródło C++ 's, a mianowicie te, graficzne. Kombinacja znaków tworzących dwuznak jest przetwarzana jako pojedynczy token. To z kolei rekompensuje każdą niedostatecznie wyposażoną klawiaturę lub inny taki sprzęt lub oprogramowanie.
Program używa digraphs, który umożliwia programowanie w C++ za pomocą klawiatur (lub kodowań tekstowych), które mogą nie mieć znaków typowych dla języka C++.
Kod postanawia to:
int main(){
[]{}; // smile!
}
int main(){ <:]{%>; // smile! }
Jest to w zasadzie Lambda expression (wyrażenie lambda jest jednym z C++11 funkcji) za pomocą digraphs (zarówno digrafy i trójznaków działa na C++):
[] {};
Korzystanie tylko z wykopów raphs:
<:]<%};
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;
mieszanie ich z trójznaków:
<:??)<%??>; // popeye
??(:>{??>; // pirate
dałem coś wzdłuż tych linii do klasy programowania jako bonus. Jestem zły, wiem. Jest bardzo niezauważalny w Google. – chris
Ładne opowiadanie; Słyszałem, że pozwieją cię za powiedzenie "nieobsługiwalne". – matt
@matt Oni pozwali sweeden: http://www.bbc.com/news/magazine-21956743 – Edward