다음을 통해 공유


컴파일러 오류 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;
    };
}