Leggere in inglese

Condividi tramite


Errore del compilatore C3409

blocco di attributi vuoto non consentito

Osservazioni:

Le parentesi quadre sono state interpretate dal compilatore come blocco di attributi , ma non sono stati trovati attributi.

Il compilatore può generare questo errore quando si usano parentesi quadre come parte della definizione di un'espressione lambda. Questo errore si verifica quando il compilatore non è in grado di determinare se le parentesi quadre fanno parte della definizione di un'espressione lambda o di un blocco di attributi. Per altre informazioni sulle espressioni lambda, vedere Espressioni lambda in C++.

Per correggere l'errore

  1. Se le parentesi quadre fanno parte di un blocco di attributi:

    1. Specificare uno o più attributi nel blocco di attributi.

    2. Rimuovere il blocco di attributi.

  2. Se le parentesi quadre fanno parte di un'espressione lambda, assicurarsi che l'espressione lambda segua le regole di sintassi valide.

    Per altre informazioni sulla sintassi delle espressioni lambda, vedere Lambda Expression Syntax.For more information about lambda expression syntax, see Lambda Expression Syntax.

Esempi

L'esempio seguente genera l'errore 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'esempio seguente genera l'errore C3409 perché un'espressione lambda usa la mutable specifica , ma non fornisce un elenco di parametri. Il compilatore non può determinare se le parentesi quadre fanno parte della definizione di un'espressione lambda o di un blocco di attributi.

// C3409b.cpp

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

Vedi anche

attribute
Espressioni lambda
Sintassi delle espressioni lambda