为什么不能将隐式类型修饰符*
(指针)与同一基类型的另一个变量一起定义?
int i = 1;
auto ip = &i; // fine
auto *ip2 = &i; // fine
// error: inconsistent deduction for ‘auto’: ‘int*’ and then ‘int’
// auto ip3 = &i, ir = i;
// auto ip4 = &i, ival = i;
auto *ip5 = &i, &ir2 = i; // fine
auto *ip6 = &i, &ival2 = i; // fine
我通常更喜欢更明确的代码以及*
和&
的使用,以提高可读性和意图。在这里,我甚至会为每行定义一个变量。但在这种情况下,我想知道为什么在ip3
和{{1}的情况下,基类型的隐式使用类型修饰符不起作用}。
这是安全措施还是约束?
答案 0 :(得分:3)
没有"基本类型"在您尝试使用它的上下文中; int*
与int
期间的版本不同。
auto
必须"解决"在整个多变量声明中使用相同的类型,否则它通常不明确你想要哪一个(考虑转换)。