次の方法で共有


コンパイラ エラー C3409

空の属性ブロックは認められません

解説

角かっこはコンパイラによって属性ブロックとして解釈されましたが、属性は見つかりませんでした。

ラムダ式の定義の一部として角かっこを使用すると、コンパイラによってこのエラーが生成される場合があります。 このエラーは、角かっこがラムダ式の定義または属性ブロックの定義の一部であるかどうかをコンパイラでは判断できない場合に発生します。 ラムダ式について詳しくは、「ラムダ式」をご覧ください。

このエラーを解決するには

  1. 角かっこが属性ブロックの一部である場合、次を行います。

    1. 属性ブロックに 1 つ以上の属性を指定します。

    2. 属性ブロックを削除します。

  2. 角かっこがラムダ式の一部である場合は、ラムダ式が有効な構文規則に従っている必要があります。

    ラムダ式の構文について詳しくは、「ラムダ式の構文」を参照してください。

次の例では C3409 が生成されます。

// C3409.cpp
// compile with: /c
#include <windows.h>
[]   // C3409
class a {};

// OK
[object, uuid("00000000-0000-0000-0000-000000000000")]
__interface x {};

[coclass, uuid("00000000-0000-0000-0000-000000000001")]
class b : public x {};

ラムダ式では mutable 仕様が使用されますが、パラメーター リストは提供されないため、次の例では C3409 が生成されます。 角かっこがラムダ式の定義または属性ブロックの定義の一部であるかどうかをコンパイラでは判断できません。

// C3409b.cpp

int main()
{
   [] mutable {}();
}

関連項目

attribute
ラムダ式
ラムダ式の構文