Ошибка компилятора C2760
синтаксическая ошибка: ожидаемое "name1" не "name2"
синтаксическая ошибка: непредвиденный токен "token1", ожидаемый "token2"
синтаксическая ошибка: "token1" был непредвиденной здесь; ожидается "token2"
Замечания
Существует несколько способов вызвать эту ошибку. Как правило, это вызвано последовательностью маркеров, о том, что компилятор не может понять.
Пример
В этом примере оператор приведения используется с недопустимым оператором.
// 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
}
Новый лямбда-процессор, доступный в /std:c++20
разделе или более поздних версиях, /Zc:lambda
включает некоторые новые синтаксические проверки в универсальных лямбда-кодах. Устаревший лямбда-процессор компилирует этот код без предупреждений, но новый лямбда-процессор выдает ошибку C2760:
void f() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
В этом примере показан правильный синтаксис, который теперь применяется компилятором, который работает во всех /std
режимах:
void f() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}