该问题通常表现为编译器在初始化auto变量时发出警告,如下所示:
warning: suggest parentheses around assignment used as truth value [-Wparentheses]
int a = 0;
auto b = a = 1;
在该示例中,编译器会警告“b = a = 1”应该加上括号以明确赋值的顺序。然而,该警告的出现是因为C++标准并未规定auto变量初始化的顺序,因此不同编译器可能会以不同的顺序进行初始化。
为了解决这个问题,建议大家在初始化auto变量时添加括号,以明确赋值的顺序:
int a = 0;
auto b = (a = 1);
这将确保在任何C++编译器中都以相同的顺序初始化auto变量,避免可能的兼容性问题。