最近,我遇到了以下深奥的代码。
int main(){(([](){})());}
重新格式化,如下所示以使其更具可读性:
int main(){
    (([](){})());   //  Um... what?!?!
}
但是我无法理解(([](){})())有效代码的有效性。
- 它看起来不像函数指针语法。
 - 这不可能是操作员重载的把戏。代码按原样编译。
 
Google在这种全符号搜索中并没有太大帮助。但是它可以在Visual Studio 2010中编译,但不输出任何内容。没有错误,也没有警告。因此,它看起来像有效的代码。
在Javascript和C函数指针之外,我从未见过任何如此奇怪的有效代码。
有人可以解释这是如何有效的C ++吗?
                  @Mysticial-此代码使您感到迷惑,因为它没有用。如果此lambda可以执行某些操作,您将认识到它具有类似于函数指针的语法(与之密切相关)。
                
                
                  
                    —
                    SChepurin 
                    
                  
                
              
                  @Mysticial-“ C ++的6年”-lambdas只是在C ++ 11中添加的,因此一年左右之前没有人有使用它们的经验。
                
                
                  
                    —
                    皮特·贝克尔
                    
                  
                
              
                  这里的URL很有趣:“ how-is-int-main-valid-c”
                
                
                  
                    —
                    tckmn 2014年
                    
                  
                
              
Don't sweat it. We have int main(){(([](){})());} which is valid C++"(聊天11月9日)