Condividi tramite


Errore del compilatore C2760

errore di sintassi: previsto 'name1' non 'name2'
errore di sintassi: token imprevisto 'token1', previsto 'token2'
errore di sintassi: 'token1' è stato imprevisto qui; previsto 'token2'

Osservazioni:

Esistono diversi modi per causare questo errore. In genere, è causato da una sequenza di token che il compilatore non ha senso.

Esempio

In questo esempio viene usato un operatore di cast con un operatore non valido.

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

Il nuovo processore lambda disponibile in /std:c++20 o versione successiva, o in /Zc:lambda, abilita alcuni nuovi controlli sintattici in modalità di conformità nelle espressioni lambda generiche. Il processore lambda legacy compila questo codice senza avvisi, ma il nuovo processore lambda genera l'errore C2760:

void f() {
    auto a = [](auto arg) {
        decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
    };
}

Questo esempio mostra la sintassi corretta, ora applicata dal compilatore, che funziona in tutte le /std modalità:

void f() {
    auto a = [](auto arg) {
        typename decltype(arg)::Type t;
    };
}