Erro do compilador C3409
Não é permitido bloco de atributos vazio
Comentários
Os colchetes foram interpretados pelo compilador como um bloco de atributos, mas nenhum atributo foi encontrado.
O compilador pode gerar esse erro quando você usa colchetes como parte da definição de uma expressão lambda. Esse erro ocorre quando o compilador não consegue determinar se os colchetes fazem parte da definição de uma expressão lambda ou de um bloco de atributo. Para obter mais informações sobre expressões lambda, consulte Expressões lambda.
Para corrigir este erro
Se os colchetes fizerem parte de um bloco de atributos:
Forneça um ou mais atributos no bloco de atributos.
Remova o bloco de atributos.
Se os colchetes fizerem parte de uma expressão lambda, verifique se a expressão lambda segue regras de sintaxe válidas.
Para saber mais sobre a sintaxe de expressões lambda, confira o artigo sobre Sintaxe de expressões lambda.
Exemplos
O seguinte exemplo gera o erro 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 {};
O exemplo a seguir gera C3409 porque uma expressão lambda usa a especificação mutable
, mas não fornece uma lista de parâmetros. O compilador não consegue determinar se os colchetes fazem parte da definição de uma expressão lambda ou de um bloco de atributos.
// C3409b.cpp
int main()
{
[] mutable {}();
}