Erreur du compilateur C2760
erreur de syntaxe : 'name1' attendu et non 'name2'
erreur de syntaxe : jeton inattendu 'token1', 'token2' attendu
erreur de syntaxe : « token1 » était inattendu ici ; « token2 » attendu
Notes
Il existe plusieurs façons de provoquer cette erreur. En règle générale, il est dû à une séquence de jetons dont le compilateur ne peut pas avoir le sens.
Exemple
Dans cet exemple, un opérateur de cast est utilisé avec un opérateur non valide.
// C2760.cpp
class B {};
class D : public B {};
void f(B* pb) {
D* pd1 = static_cast<D*>(pb);
D* pd2 = static_cast<D*>=(pb); // C2760
D* pd3 = static_cast<D*=(pb); // C2760
}
Le nouveau processeur lambda disponible sous ou version /std:c++20
ultérieure, ou sous /Zc:lambda
, active de nouvelles vérifications syntactiques en mode de conformité dans les lambdas génériques. Le processeur lambda hérité compile ce code sans avertissements, mais le nouveau processeur lambda génère l’erreur C2760 :
void f() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
Cet exemple montre la syntaxe correcte, désormais appliquée par le compilateur, qui fonctionne dans tous les /std
modes :
void f() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}