Error del compilador C3535
no se puede deducir el tipo para 'type1' de 'type2'
El tipo de la variable declarada por la palabra clave auto
no se puede deducir del tipo de la 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 la expresión de inicialización no es
void
.Asegúrese de que la declaración no es un puntero a un tipo fundamental. Para más información, consulte Tipos fundamentales.
Asegúrese de que si la declaración es un puntero a un tipo, la expresión de inicialización es un tipo de puntero.
Ejemplos
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 un puntero a un tipo deducido, pero el tipo de la expresión de inicializador es doble. Por lo tanto, 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