9

以下通用(多态)lambda 是否合法 C++14?

auto f = [](auto x[3]) {
    x[0];
    x[1];
    // etc.
};

GCC 和 Clang 4 接受代码,但 Visual Studio 2017 不接受。合法吗?

error C3318: 'auto [3]': an array cannot have an element type that contains 'auto'
4

1 回答 1

11

这是非法的。

[dcl.array]/1,强调我的:

在声明 TD 中,其中 D 具有以下形式

D1 [常量表达式选择]属性说明符序列选择

并且声明中标识符的类型T D1为“<em>derived-declarator-type-list T”,则标识符的类型为D数组类型;如果标识符的类型D包含auto 类型说明符,则程序格式错误。

于 2017-08-27T09:08:35.853 回答