什么是笑脸胡子表情:“<:] {%>”?

我遇到了下面的程序,其中没有错误或甚至警告编译:

int main(){ <:]{%>; // smile! } 

现场示例。

该节目做什么,笑脸expression是什么?

这是一个空的lambda使用有形伪装。 正常的lambda没有胡须。

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

 [] {}; 

这是一个什么都不做的lambdaexpression式。 相应的符号有这些等价物:

 <: = [ %> = } 

尽pipe今天通常不需要,但是当你的键盘缺less使用C ++的基本源字符集(即graphics字符集)所必需的键时,二叉字符是有用的。 构成有向图的字符的组合被处理为单个令牌。 这反过来弥补了任何装备不足的键盘或其他这样的硬件或软件。

该程序正在使用二元graphics ,它允许使用键盘(或文本编码)进行C ++编程,这些键盘可能没有C ++通常使用的字符。

代码parsing为:

 int main(){ []{}; // smile! } 
 int main(){ <:]{%>; // smile! } 

它基本上是一个Lambdaexpression式 (Lambdaexpression式是C ++ 11的一个特性),它使用二元图 (在C ++中都是二元图和三元图):

 [] {}; 

只使用图:

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

混合他们与Trigraphs:

 <:??)<%??>; // popeye ??(:>{??>; // pirate