【发布时间】:2017-12-30 06:37:11
【问题描述】:
Auto关键字用于根据初始化推断变量的类型。但我在互联网上读到 auto 无法确定函数参数的类型。我不明白 auto 与函数参数一起使用时无法确定类型的原因。谁能告诉我为什么 auto 不能与函数参数一起使用以及任何其他不能使用 auto 关键字来确定类型的情况。
【问题讨论】:
-
int f(auto x) { auto y = x + x; return 0; }如果你是编译器,你会在这里选择什么类型的x? -
auto 作为函数参数将与模板相同。 lambda 实际上就是这种情况。
-
@SilvioMayolo:当您在调用函数时传递参数时,为什么编译器会根据函数定义中的用法确定类型?为什么不能根据传递的参数自动判断类型?
-
@kadina,因为人们有模板。在我看来,它提供了更好的控制,而且在所有方面都更好。
-
@kadina:类型不是由使用决定的,而是由初始化决定的。
auto foo;无效,但您之后使用 foo。