Udostępnij przez


Błąd kompilatora C2760

błąd składni: oczekiwana wartość "name1" nie "name2"
błąd składni: nieoczekiwany token "token1", oczekiwany "token2"
błąd składni: "token1" był tutaj nieoczekiwany; oczekiwano "token2"

Uwagi

Istnieje kilka sposobów, aby spowodować ten błąd. Zazwyczaj jest to spowodowane przez sekwencję tokenów, z którą kompilator nie może mieć sensu.

Przykłady

W tym przykładzie operator rzutowania jest używany z nieprawidłowym operatorem.

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

Nowy procesor lambda dostępny w systemach /std:c++20 lub nowszych lub w obszarze /Zc:lambdaumożliwia niektóre nowe testy syntactyczne trybu zgodności w ogólnych wyrażeniach lambda. Starszy procesor lambda kompiluje ten kod bez ostrzeżeń, ale nowy procesor lambda generuje błąd C2760:

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

W tym przykładzie pokazano poprawną składnię, która działa teraz przez kompilator, który działa we wszystkich /std trybach:

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