我碰到了下面的程序编译没有错误,甚至警告:
int main(){
<:]{%>; // smile!
}
活生生的例子。
是什么程序做的,什么是笑脸表达?
我碰到了下面的程序编译没有错误,甚至警告:
int main(){
<:]{%>; // smile!
}
活生生的例子。
是什么程序做的,什么是笑脸表达?
这是一个使用有向图伪装空拉姆达。 普通lambda表达式没有胡须。
该方案采用有向图来表示如下:
[] {};
这是一个lambda表达式,什么也不做。 相应的符号具有这些等价形式:
<: = [
%> = }
虽然今天他们是不必要的,有向图是当你的键盘没有必要使用C ++的基本来源字符集,即图形化的,某些键有用。 构成有向图中的字符的组合被处理为一个单一令牌。 这又弥补了不足任何配备键盘或其他类似的硬件或软件。
该方案是使用有向图 ,其允许C ++与键盘(或文本编码)编程可能不具有C ++通常使用的字符。
代码解析到此:
int main(){
[]{}; // smile!
}
int main(){ <:]{%>; // smile! }
它基本上是一个Lambda表达式 (Lambda表达式是一个C ++ 11个功能)使用有向图 (包括二合字母和三字母工作在C ++):
[] {};
仅使用有向图:
<:]<%};
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;
与三字母混合它们:
<:??)<%??>; // popeye
??(:>{??>; // pirate