Teilen über


Compilerfehler C2760

Syntaxfehler: 'Name1' nicht 'name2' erwartet
Syntaxfehler: unerwartetes Token 'token1', erwartet 'token2'
Syntaxfehler: "token1" war hier unerwartet; erwartet "token2"

Hinweise

Es gibt mehrere Möglichkeiten, diesen Fehler zu verursachen. In der Regel wird dies durch eine Tokensequenz verursacht, von der der Compiler nicht sinnvoll ist.

Beispiele

In diesem Beispiel wird ein Umwandlungsoperator mit einem ungültigen Operator verwendet.

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

Der neue Lambda-Prozessor, der unter /std:c++20 oder höher oder höher /Zc:lambdaverfügbar ist, ermöglicht einige neue Konformitätsmodus syntaktische Überprüfungen in generischen Lambdas. Der ältere Lambda-Prozessor kompiliert diesen Code ohne Warnungen, aber der neue Lambda-Prozessor erzeugt Fehler C2760:

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

Dieses Beispiel zeigt die richtige Syntax, die nun vom Compiler erzwungen wird, der in allen /std Modi funktioniert:

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