Ошибка компилятора C3409
Пустой блок атрибута не разрешен
Замечания
Квадратные скобки интерпретируются компилятором как блок атрибутов , но не найдены атрибуты.
Компилятор может создать эту ошибку при использовании квадратных квадратных скобок в рамках определения лямбда-выражения. Эта ошибка возникает, когда компилятор не может определить, являются ли квадратные скобки частью определения лямбда-выражения или блока атрибутов. Дополнительные сведения о лямбда-выражениях см. в разделе Лямбда-выражения.
Исправление ошибки
Если квадратные скобки являются частью блока атрибутов:
Укажите один или несколько атрибутов в блоке атрибутов.
Удалите блок атрибутов.
Если квадратные скобки являются частью лямбда-выражения, убедитесь, что лямбда-выражение соответствует допустимым правилам синтаксиса.
Дополнительные сведения о синтаксисе лямбда-выражения см . в лямбда-синтаксисе выражений.
Примеры
В следующем примере создается 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 {}();
}