我想知道为什么在某些/所有情况下不可能完全省略 auto 关键字,例如
int main()
{
[](auto x){}(10); // why this?
[](x){}(10); // and not this?
auto x = 10;
x = 10;
}
Run Code Online (Sandbox Code Playgroud)
是否存在歧义或类似问题?还是简单的设计选择?
考虑一下:
struct x {};
[](x){}(10);
Run Code Online (Sandbox Code Playgroud)
那是一个带有未命名参数类型的 lambda x(根据当前语言规范)还是它是一个以x推导类型命名的参数(根据您的建议)?您建议的语法与函数参数声明的预先存在的语法不明确。
Run Code Online (Sandbox Code Playgroud)x = 10;
这甚至更成问题,因为它与分配无法区分。写这个的人可能试图定义一个变量(你的建议),但它也可以根据上下文分配现有变量。C++ 有太多的语法歧义(对于程序员而言)。我们应该避免添加更多。
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |