【发布时间】:2015-03-16 16:37:30
【问题描述】:
我在网上找到了这个奇怪的代码,但不知道它的作用。当我编译它时,我没有得到任何输出。
int main()<%auto f = <::><%%>;%>
【问题讨论】:
-
"这个奇怪的代码有什么作用?" ——将作者标记为相当恶作剧的人。 :-D
标签: c++
我在网上找到了这个奇怪的代码,但不知道它的作用。当我编译它时,我没有得到任何输出。
int main()<%auto f = <::><%%>;%>
【问题讨论】:
标签: c++
使用二合字母,<% 对应于{,%> 对应于}。
将这些替换为收益率
int main(){ auto f = <::>{}; }
最后,<: 等价于[ 和:> 等价于],所以我们最终得到
int main(){ auto f = []{}; }
[]{} 是一个空的 lambda,f 是闭包对象的副本。
【讨论】:
它使用digraphs 来混淆一些简单的代码。完全一样
int main() { auto f = []{}; }
换句话说,不多。它只是实例化一个空的 lambda,将其绑定到 f。 f 甚至没有被调用。
【讨论】: