2016-09-26 100 views
1

我知道一个函数不能返回数组,但这个函数声明函数返回一个数组

auto fun(/*...*/) -> int [2] 

可以通过编译。为什么!?

+3

巴吉编译器?哪一个问题,你正在使用哪个编译器? – juanchopanza

+0

我用g ++ 11规则使用MinGW。 – tocrafty

回答

1

的确,函数不能按值返回一个普通数组。

具有这种返回类型的声明是格式不正确的,如果编译器在没有警告的情况下接受它,那么编译器不严格符合标准。这可能是一个错误 - 或语言扩展。

看来这个bug在g ++ - 6.1中是可重现的。如果您尝试定义返回数组的功能,你可以看到这个热闹的错误消息:

error: cannot convert 'int [2]' to 'int [2]' in return