以下通用(多态)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'
以下通用(多态)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'
这是非法的。
[dcl.array]/1,强调我的:
在声明 TD 中,其中 D 具有以下形式
D1 [常量表达式选择]属性说明符序列选择并且声明中标识符的类型
T D1
为“<em>derived-declarator-type-listT
”,则标识符的类型为D
数组类型;如果标识符的类型D
包含auto
类型说明符,则程序格式错误。