C ++奇怪的expression式编译得很好
为什么有下列有效的C ++expression式? 这些不是lambdaexpression式
[]{}(); {}[]{}; 
有人可以向我解释吗?
 第一个是没有参数列表和后续调用的lambda。  []{}等价于[](){}所以整行等价于 
 [](){}(); 
第二个是一对大括号,它引入并立即closures一个范围,然后是一个没有使用参数列表的未使用的lambda定义:
 { // empty scope } []{}; // lambda 
您可以参考http://en.cppreference.com/w/cpp/language/lambda了解lambda定义语法的变体。;
- 
这是一个lambda调用
[]{}();它相当于
[](){}(); - 
第二个是空的范围,后面是一个(未使用的)lambda。
 
对于没有参数的lambda,Parens是可选的。