Tôi đã xem qua chương trình sau, nó biên dịch mà không có lỗi hoặc thậm chí không có cảnh báo:
int main(){
<:]{%>; // smile!
}
Chương trình làm gì, và biểu hiện mặt cười đó là gì?
Tôi đã xem qua chương trình sau, nó biên dịch mà không có lỗi hoặc thậm chí không có cảnh báo:
int main(){
<:]{%>; // smile!
}
Chương trình làm gì, và biểu hiện mặt cười đó là gì?
Câu trả lời:
Đó là một lambda trống bằng cách sử dụng một máy ngụy trang. Lambdas bình thường không có râu.
Chương trình sử dụng các biểu đồ để thể hiện như sau:
[] {};
Đây là một biểu hiện lambda không làm gì cả. Các biểu tượng tương ứng có các tương đương:
<: = [
%> = }
Mặc dù ngày nay chúng không cần thiết, nhưng máy in rất hữu ích khi bàn phím của bạn thiếu một số phím nhất định cần thiết để sử dụng bộ ký tự nguồn cơ bản của C ++, cụ thể là bộ đồ họa. Sự kết hợp của các ký tự tạo nên một bản vẽ sơ đồ được xử lý như một mã thông báo duy nhất. Điều này lần lượt bù cho bất kỳ bàn phím được trang bị không đủ hoặc phần cứng hoặc phần mềm như vậy.
int main(){ <:]{%>; // smile! }
Về cơ bản, đó là một biểu thức Lambda ( biểu thức Lambda là một trong những tính năng của C ++ 11 ) bằng cách sử dụng các bản vẽ sơ đồ (cả bản gốc và bản dịch đều hoạt động trên C ++):
[] {};
Chỉ sử dụng máy in:
<:]<%};
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;
Trộn chúng với Tricles:
<:??)<%??>; // popeye
??(:>{??>; // pirate