Partager via


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;
    };
}