編譯器錯誤 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
}
在 或更新版本或 下/Zc:lambda
提供/std:c++20
的新 Lambda 處理器,可在泛型 Lambda 中啟用一些新的一致性模式語法檢查。 舊版 Lambda 處理器會編譯此程式代碼,但新的 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;
};
}