你能用逗号自动吗?

时间:2017-12-08 17:23:00

标签: c++ initialization auto

您是否可以使用auto推导类型,其中有逗号来指示两个或多个变量的初始化。像这样:

 auto p = c.begin(), e = c.end();

或者是否存在两个初始化(可能)对编译器来说太混乱了? C ++标准允许什么?

2 个答案:

答案 0 :(得分:3)

是的,你可以用那种方式初始化它们,只要它们属于同一类型(它们在你的例子中)。

答案 1 :(得分:2)

  

你能否使用自动推导类型,你有一个逗号运算符来指示两个或多个变量的初始化。

  

或者两个初始化的存在对编译器来说太混乱了吗?

不,不是。只要自动扣除不会导致使用auto在同一语句中声明多个变量的类型不一致就可以了。

来自C++11 Standard/7.1.6.4 auto specifier/3

auto x = 5;                 // OK: x has type int
const auto *v = &x, u = 6;  // OK: v has type const int*, u has type const int

但是,您可能不会使用:

const auto *v = &x, u = 6.0;

并希望将v的类型推断为const int*,并将u的类型推断为const double