C ++语法,数组和lambda函数歧义

时间:2015-08-25 14:47:44

标签: c++ c++11 syntax parameters lambda

我的问题纯粹是语法上的。在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的函数调用。

0 个答案:

没有答案