隐式指针变量与自动定义中的另一个变量

时间:2018-02-25 17:59:47

标签: c++ auto

为什么不能将隐式类型修饰符*(指针)与同一基类型的另一个变量一起定义?

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}的情况下,基类型的隐式使用类型修饰符不起作用}。

这是安全措施还是约束?

1 个答案:

答案 0 :(得分:3)

没有"基本类型"在您尝试使用它的上下文中; int*int期间的版本不同。

auto必须"解决"在整个多变量声明中使用相同的类型,否则它通常不明确你想要哪一个(考虑转换)。