这个笑脸胡子的表情是什么:"<:] {%>"?

Xeo*_*Xeo 297 c++ expression emoticons digraphs

我遇到了以下程序,它编译时没有错误甚至是警告:

int main(){
  <:]{%>; // smile!
}
Run Code Online (Sandbox Code Playgroud)

实例.

程序做了什么,笑脸表达是什么?

0x4*_*2D2 352

该程序使用有向图来表示以下内容:

[] {};
Run Code Online (Sandbox Code Playgroud)

这是一个什么都不做的lambda表达式.相应的符号具有以下等价物:

<: = [
%> = }
Run Code Online (Sandbox Code Playgroud)

虽然今天通常不需要它们,但是当键盘缺少使用C++基本源字符集所必需的某些键时,有用图有用,即图形键.组成有向图的字符组合作为单个标记处理.这反过来弥补了任何配备不充分的键盘或其他此类硬件或软件.


R. *_*des 289

这是一个使用有向图伪装的空lambda.普通的lambda没有胡须.


Dre*_*ann 66

该程序使用有向图,它允许使用可能没有C++通常使用的字符的键盘(或文本编码)进行C++编程.

代码解析为:

int main(){
  []{}; // smile!
}
Run Code Online (Sandbox Code Playgroud)


Kha*_*d.K 59

int main(){
  <:]{%>; // smile!
}
Run Code Online (Sandbox Code Playgroud)

它基本上是一个使用有向图Lambda表达式(Lambda表达式是C++ 11特性之一)(有向图和三字符都适用于C++):

[] {};
Run Code Online (Sandbox Code Playgroud)

仅使用有向图:

<:]<%}; 

<:]<%%>;

[:>{%>; // like my cubic hat?

[:><%};

[:><%%>;
Run Code Online (Sandbox Code Playgroud)

将它们与Trigraphs混合:

<:??)<%??>; // popeye

??(:>{??>; // pirate
Run Code Online (Sandbox Code Playgroud)