Partager via


Erreur du compilateur C3535

impossible de déduire le type pour 'type1' de 'type2'

Le type de la variable déclarée par l’mot clé auto ne peut pas être déduit du type de l’expression d’initialisation. Par exemple, cette erreur se produit si l’expression d’initialisation prend voidla valeur , ce qui n’est pas un type.

Pour corriger cette erreur

  1. Vérifiez que le type de l’expression d’initialisation n’est pas void.

  2. Vérifiez que la déclaration n’est pas un pointeur vers un type fondamental. Pour plus d’informations, consultez Types fondamentaux.

  3. Vérifiez que si la déclaration est un pointeur vers un type, l’expression d’initialisation est un type de pointeur.

Exemples

L’exemple suivant génère l’erreur C3535, car l’expression d’initialisation est évaluée à void.

// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
   auto x = f();   //C3535
   return 0;
}

L’exemple suivant génère l’erreur C3535, car l’instruction déclare une variable x en tant que pointeur vers un type déduit, mais le type de l’expression initialiseur est double. Par conséquent, le compilateur ne peut pas déduire le type de la variable.

// C3535b.cpp
// Compile with /Zc:auto
int main()
{
   auto* x = 123.0;   // C3535
   return 0;
}

L’exemple suivant génère l’erreur C3535, car la variable p déclare un pointeur vers un type déduit, mais l’expression d’initialisation n’est pas un type de pointeur.

// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x;  // C3535

Voir aussi

auto, mot clé
Types fondamentaux