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