Error del compilador C3535
no se puede deducir el tipo para "tipo1" de "tipo2"
El tipo de variable declarada por la palabra clave auto no se puede deducir del tipo de expresión de inicialización. Por ejemplo, este error se produce si la expresión de inicialización se evalúa como void, que no es un tipo.
Para corregir este error
Asegúrese de que el tipo de expresión de inicialización no es void.
Asegúrese de que la declaración no es un puntero a un tipo fundamental. Para obtener más información, vea Tipos fundamentales (C++).
Asegúrese de que, si la declaración es un puntero a un tipo, la expresión de inicialización sea un tipo de puntero.
Ejemplo
En el ejemplo siguiente se genera el error C3535 porque la expresión de inicialización se evalúa como void.
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
En el ejemplo siguiente se genera el error C3535 porque la instrucción declara la variable x como puntero a un tipo deducido, pero el tipo de la expresión de inicializador es doble. Por consiguiente, el compilador no puede deducir el tipo de la variable.
// C3535b.cpp
// Compile with /Zc:auto
int main()
{
auto* x = 123.0; // C3535
return 0;
}
En el ejemplo siguiente se genera el error C3535 porque la variable p declara un puntero a un tipo deducido, pero la expresión de inicialización no es un tipo de puntero.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535