Compartilhar via


Erro do compilador C2760

erro de sintaxe: 'name1' era esperado, não 'name2'
erro de sintaxe: token inesperado 'token1', 'token2' esperado
erro de sintaxe: 'token1' foi inesperado aqui; 'token2' esperado

Comentários

Há várias maneiras de causar esse erro. Normalmente, ele é causado por uma sequência de tokens que o compilador não consegue entender.

Exemplo

Neste exemplo, um operador de conversão é usado com um operador inválido.

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

O novo processador lambda disponível em /std:c++20 ou posterior, ou abaixo de /Zc:lambda, habilita algumas novas verificações sintáticas no modo de conformidade em lambdas genéricos. O processador lambda herdado compila esse código sem avisos, mas o novo processador lambda produz o erro C2760:

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

Este exemplo mostra a sintaxe correta, agora imposta pelo compilador, que funciona em todos os modos /std:

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