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