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 une nouvelle case activée syntactique en mode de conformité dans les lambda 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;
};
}