次の方法で共有


コンパイラ エラー C2760

構文エラー: 'name2' ではなく 'name1' が必要です
構文エラー: 予期しないトークン '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;
    };
}