Поделиться через


Ошибка компилятора C3409

Пустой блок атрибута не разрешен

Замечания

Квадратные скобки интерпретируются компилятором как блок атрибутов , но не найдены атрибуты.

Компилятор может создать эту ошибку при использовании квадратных квадратных скобок в рамках определения лямбда-выражения. Эта ошибка возникает, когда компилятор не может определить, являются ли квадратные скобки частью определения лямбда-выражения или блока атрибутов. Дополнительные сведения о лямбда-выражениях см. в разделе Лямбда-выражения.

Исправление ошибки

  1. Если квадратные скобки являются частью блока атрибутов:

    1. Укажите один или несколько атрибутов в блоке атрибутов.

    2. Удалите блок атрибутов.

  2. Если квадратные скобки являются частью лямбда-выражения, убедитесь, что лямбда-выражение соответствует допустимым правилам синтаксиса.

    Дополнительные сведения о синтаксисе лямбда-выражения см . в лямбда-синтаксисе выражений.

Примеры

В следующем примере создается 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, так как лямбда-выражение использует спецификацию mutable , но не предоставляет список параметров. Компилятор не может определить, являются ли квадратные скобки частью определения лямбда-выражения или блока атрибутов.

// C3409b.cpp

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

См. также

атрибут
Лямбда-выражения
Синтаксис лямбда-выражений