隐式自动类型说明符
Implicit auto type specifier
我想知道为什么在 some/all 情况下不能完全省略 auto 关键字,例如
int main()
{
[](auto x){}(10); // why this?
[](x){}(10); // and not this?
auto x = 10;
x = 10;
}
是否有歧义或类似的问题?或者它只是一个简单的设计选择?
考虑一下:
struct x {};
[](x){}(10);
那个 lambda 是带有 x
类型的未命名参数(根据当前语言规范)还是推导类型的名为 x
的参数(根据您的建议)?您建议的语法与函数参数声明的预先存在的语法不明确。
x = 10;
这更成问题,因为它与赋值没有区别。写这篇文章的人可能试图定义一个变量(您的建议),但它也可以根据上下文分配现有变量。 C++ 有太多的语法歧义(对程序员而言)。我们应该避免添加更多。
我想知道为什么在 some/all 情况下不能完全省略 auto 关键字,例如
int main()
{
[](auto x){}(10); // why this?
[](x){}(10); // and not this?
auto x = 10;
x = 10;
}
是否有歧义或类似的问题?或者它只是一个简单的设计选择?
考虑一下:
struct x {};
[](x){}(10);
那个 lambda 是带有 x
类型的未命名参数(根据当前语言规范)还是推导类型的名为 x
的参数(根据您的建议)?您建议的语法与函数参数声明的预先存在的语法不明确。
x = 10;
这更成问题,因为它与赋值没有区别。写这篇文章的人可能试图定义一个变量(您的建议),但它也可以根据上下文分配现有变量。 C++ 有太多的语法歧义(对程序员而言)。我们应该避免添加更多。