exponenta event banner

Правило AUTOSAR C++ 14 A5-1-3

Список параметров (возможно, пустой) должен быть включен в каждое лямбда-выражение

Описание

Определение правила

Список параметров (возможно, пустой) должен быть включен в каждое лямбда-выражение.

Объяснение

Нет необходимости включать список параметров в лямбда-выражение. Например, это выражение является синтаксически допустимым и указывает на замыкание, которое можно вызвать без параметров:

[&counter] {
   ++counter;
}
Однако без (), вы или рецензент могут не распознать это как объект функции. Визуально понятнее использовать список параметров (...) даже если список пуст. Например:
[&counter]() {
   ++counter;
}

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

развернуть все

#include <cstdint>

void func() {
    std::int32_t count = 0;
    
    auto lambda1 = [&count] {++count;}; //Noncompliant
    auto lambda2 = [&count] () { //Compliant
        ++count;
    };
}

Лямбда-выражение, назначенное lambda1 не имеет списка параметров и нарушает правило. Проблема устраняется при назначении того же лямбда-выражения lambda2.

Проверить информацию

Группа: Выражения
Категория: Обязательно, Автоматизировано
Представлен в R2019b