我遇到了以下程序,它编译时没有错误甚至警告:
int main(){
<:]{%>; // smile!
}
程序是做什么的,那个笑脸是什么?
该程序使用有向图来表示以下内容:
[] {};
这是一个什么都不做的 lambda 表达式。相应的符号具有以下等价物:
<: = [
%> = }
尽管现在通常不需要它们,但当您的键盘缺少使用 C++ 的基本源字符集(即图形字符集)所需的某些键时,二合字母很有用。组成有向图的字符组合作为单个标记处理。这反过来弥补了任何装备不足的键盘或其他此类硬件或软件。
这是一个使用有向图伪装的空 lambda。普通的 lambda 人没有胡须。
int main(){ <:]{%>; // smile! }
它基本上是一个使用有向图的Lambda 表达式(Lambda 表达式是C++11的功能之一)(有向图和三联图都适用于 C++):
[] {};
仅使用有向图:
<:]<%};
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;
将它们与三字母组合:
<:??)<%??>; // popeye
??(:>{??>; // pirate