Udostępnij za pomocą


Błąd kompilatora C3409

pusty blok atrybutów jest niedozwolony

Uwagi

Nawiasy kwadratowe zostały zinterpretowane przez kompilator jako blok atrybutów , ale nie znaleziono atrybutów.

Kompilator może wygenerować ten błąd, gdy używasz nawiasów kwadratowych w ramach definicji wyrażenia lambda. Ten błąd występuje, gdy kompilator nie może określić, czy nawiasy kwadratowe są częścią definicji wyrażenia lambda lub bloku atrybutu. Aby uzyskać więcej informacji na temat wyrażeń lambda, zobacz Wyrażenia lambda.

Aby poprawić ten błąd

  1. Jeśli nawiasy kwadratowe są częścią bloku atrybutów:

    1. Podaj co najmniej jeden atrybut w bloku atrybutów.

    2. Usuń blok atrybutów.

  2. Jeśli nawiasy kwadratowe są częścią wyrażenia lambda, upewnij się, że wyrażenie lambda jest zgodne z prawidłowymi regułami składni.

    Aby uzyskać więcej informacji na temat składni wyrażenia lambda, zobacz Składnia wyrażeń lambda.

Przykłady

Poniższy przykład generuje kod 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 {};

Poniższy przykład generuje kod C3409, ponieważ wyrażenie lambda używa mutable specyfikacji, ale nie udostępnia listy parametrów. Kompilator nie może określić, czy nawiasy kwadratowe są częścią definicji wyrażenia lambda czy bloku atrybutów.

// C3409b.cpp

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

Zobacz też

attribute
Wyrażenia lambda
Składnia wyrażenia lambda