Compiler Error C3538

in a declarator-list 'auto' must always deduce to the same type

All the declared variables in a declaration list do not resolve to the same type.

To correct this error

  • Ensure that all auto declarations in the list deduce to the same type.

The following statements yield C3538. Each statement declares multiple variables, but each use of the auto keyword does not deduce to the same type.

// C3538.cpp
// Compile with /Zc:auto
// C3538 expected
int main()
// Variable x1 is a pointer to char, but y1 is a double.
   auto * x1 = "a", y1 = 3.14;  
// Variable c is a char, but c1, c2, and c3 are pointers to pointers.
   auto c = 'a', *c1 = &c, * c2 = &c1, * c3 = &c2; 
// Variable x2 is an int, but y2 is a double and z is a char.
   auto x2(1), y2(0.0), z = 'a'; 
// Variable a is a pointer to int, but b is a pointer to double.
   auto *a = new auto(1), *b = new auto(2.0); 
   return 0;