【发布时间】:2020-06-03 20:08:09
【问题描述】:
我想知道为什么在某些/所有情况下不能完全省略 auto 关键字,例如
int main()
{
[](auto x){}(10); // why this?
[](x){}(10); // and not this?
auto x = 10;
x = 10;
}
是否存在歧义或类似问题?还是简单的设计选择?
【问题讨论】:
-
你得问问标准委员会的人,因为我们大多数人能做的就是推测。
-
auto x = 10;变量定义和初始化。x = 10;现有变量的赋值。完全不同的东西。 -
你的问题有一半是answered here
-
@Yamahari 我不喜欢这个改变。如果我写了
x = 10;而没有定义x,它会让我知道我犯了一个错误。要么我忘了写一个类型(即使它是auto),要么我拼错了一个标识符。在第一种情况下保护自己免受第二种情况的麻烦是值得的。 -
不幸的是 abbreviated lambdas 被拒绝了。