您是否可以使用auto
推导类型,其中有逗号来指示两个或多个变量的初始化。像这样:
auto p = c.begin(), e = c.end();
或者是否存在两个初始化(可能)对编译器来说太混乱了? C ++标准允许什么?
答案 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
。