AUTOSAR C++14 Rule 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