这是什么笑脸与 - 胡须表达:“<:] {%>”?(What is this smile

2019-08-18 11:05发布

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

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

活生生的例子。

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

Answer 1:

这是一个使用有向图伪装空拉姆达。 普通lambda表达式没有胡须。



Answer 2:

该方案采用有向图来表示如下:

[] {};

这是一个lambda表达式,什么也不做。 相应的符号具有这些等价形式:

<: = [
%> = }

虽然今天他们是不必要的,有向图是当你的键盘没有必要使用C ++的基本来源字符集,即图形化的,某些键有用。 构成有向图中的字符的组合被处理为一个单一令牌。 这又弥补了不足任何配备键盘或其他类似的硬件或软件。



Answer 3:

该方案是使用有向图 ,其允许C ++与键盘(或文本编码)编程可能不具有C ++通常使用的字符。

代码解析到此:

int main(){
  []{}; // smile!
}


Answer 4:

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

它基本上是一个Lambda表达式 (Lambda表达式是一个C ++ 11个功能)使用有向图 (包括二合字母和三字母工作在C ++):

[] {};

仅使用有向图:

<:]<%}; 

<:]<%%>;

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

[:><%};

[:><%%>;

与三字母混合它们:

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

??(:>{??>; // pirate


文章来源: What is this smiley-with-beard expression: “<:]{%>”?