我的问题纯粹是语法上的。在C ++中,我们可以声明未命名的函数参数。我们来看看
void f( int () )
有效。就像这些:
void f( int f2() )
void f( int (f2()) )
第一个括号仅用于分组,尽管没有效果
void f( int (()) )
第一个括号仅用于分组,尽管没有效果
现在,让我们考虑一下
void f( int [] )
有效。就像这些:
void f( int a[] )
void f( int (a[]) )
第一个括号仅用于分组,尽管没有效果
然而,这一个
void f( int ([]) )
在visual studio中是非法的。它将其解释为lambda的功能强制转换。我想知道,编译器是否应该支持这种语法结构,否则它可能会产生与lambda或其他东西的语法歧义。应该足够聪明地看到它是函数声明而不是接受lambda的函数调用。