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

Implicit pointer variable with another in auto definition

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

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

我通常更喜欢 *& 更明确的代码和用法,以提高可读性和意图。在这里我什至会每行定义一个变量。但在这种情况下,我想知道为什么 基本类型 的不同 类型修饰符 的隐式使用在 [=14= 的情况下不起作用] 和 ip4.

这是安全措施还是限制?

在您尝试使用它的上下文中没有 "base type" 这样的东西; int*int 的类型不同,句号。

auto 必须在整个 multi-variable 声明中 "resolve" 为同一类型,否则通常会混淆您想要的类型(考虑转换)。