We recommend using Visual Studio 2017

Compiler Error C3538


The latest version of this topic can be found at 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

  1. 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 and c1 is char*, but 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;  

auto Keyword