Delen via


Compilerfout C2760

syntaxisfout: verwachte 'name1' niet 'name2'
syntaxisfout: onverwacht token 'token1', verwachte 'token2'
syntaxisfout: token1 was hier onverwacht; verwacht 'token2'

Opmerkingen

Er zijn verschillende manieren om deze fout te veroorzaken. Meestal wordt dit veroorzaakt door een tokenreeks waarvan de compiler geen idee kan maken.

Voorbeelden

In dit voorbeeld wordt een cast-operator gebruikt met een ongeldige operator.

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

De nieuwe lambdaprocessor die beschikbaar is onder /std:c++20 of later, of onder /Zc:lambda, maakt een aantal nieuwe syntactische controles in algemene lambdas mogelijk. De verouderde lambda-processor compileert deze code zonder waarschuwingen, maar de nieuwe lambdaprocessor produceert fout C2760:

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

In dit voorbeeld ziet u de juiste syntaxis, nu afgedwongen door de compiler, die in alle /std modi werkt:

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