不允许空特性块
注解
方括号由编译器解释为属性块,但没有找到任何属性。
使用方括号作为 lambda 表达式定义的一部分时,编译器可能会生成此错误。 当编译器无法确定方括号是 lambda 表达式的定义还是属性块的定义的一部分时,会发生此错误。 有关 lambda 表达式的详细信息,请参阅 Lambda 表达式。
更正此错误
如果方括号是属性块的一部分:
在属性块中提供一个或多个属性。
请删除该属性块。
如果方括号是 lambda 表达式的一部分,请确保 lambda 表达式遵循有效的语法规则。
若要详细了解 lambda 表达式语法,请参阅 lambda 表达式语法。
示例
下面的示例生成 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 {};
下面的示例生成 C3409,因为 lambda 表达式使用 mutable
规范,但不提供参数列表。 当编译器无法确定方括号是 lambda 表达式的定义还是属性块的定义的一部分时,会发生此错误。
// C3409b.cpp
int main()
{
[] mutable {}();
}
另请参阅
attribute
Lambda 表达式
Lambda 表达式语法