Erreur du compilateur C3409
bloc d’attributs vide non autorisé
Notes
Les crochets ont été interprétés par le compilateur comme un bloc d’attributs, mais aucun attribut n’a été trouvé.
Le compilateur peut générer cette erreur lorsque vous utilisez des crochets dans le cadre de la définition d’une expression lambda. Cette erreur se produit lorsque le compilateur ne peut pas déterminer si les crochets font partie de la définition d’une expression lambda ou d’un bloc d’attributs. Pour plus d’informations sur les expressions lambda, consultez Expressions Lambda.
Pour corriger cette erreur
Si les crochets font partie d’un bloc d’attributs :
Fournissez un ou plusieurs attributs dans le bloc d’attributs.
Supprimez le bloc d’attributs.
Si les crochets font partie d’une expression lambda, assurez-vous que l’expression lambda suit des règles de syntaxe valides.
Pour plus d’informations sur la syntaxe d’expression lambda, consultez Syntaxe d’expression lambda.
Exemples
L’exemple suivant génère l’erreur 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 {};
L’exemple suivant génère l’erreur C3409, car une expression lambda utilise la mutable
spécification, mais ne fournit pas de liste de paramètres. Le compilateur ne peut pas déterminer si les crochets font partie de la définition d’une expression lambda ou d’un bloc d’attributs.
// C3409b.cpp
int main()
{
[] mutable {}();
}