AUTOSAR C++14 Rule A13-1-2

Определяемые пользователем суффиксы пользовательских операторов литералов должны начинаться с подчеркивания, за которым следует одна или несколько букв

Описание

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

Определяемые пользователем суффиксы пользовательских операторов литералов должны начинаться с подчеркивания, за которым следует одна или несколько букв.

Объяснение

Начиная с C++ 11, можно добавить суффиксы к литералам, которые преобразуют числовые значения под капотом. Например, в коде, где вы выполняете все вычисления в общем модуле, можно оставить преобразование модулей измерения в выделенные операторы и просто использовать буквальные суффиксы для модулей при определении постоянных значений.

В этом примере буквальные суффиксы _m и _km решает, чтобы вызовы к operator"" _m() и operator"" _km() соответственно. Операторы обеспечивают преобразование всех значений в один модуль.

constexpr long double operator"" _m(long double metres) {
    return metres;
}

constexpr long double operator"" _km(long double kilometres) {
    return 1000*kilometres;
}
...
long double minSteps = 100.0_m;
long double interCityDist = 100.0_km;

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

Реализация Polyspace

Проверяющие правила флаги определений формы:

operator "" suffix
где suffix не начинается с подчеркивания или после подчеркивания, содержит символы, отличные от букв (цифры, специальные символы и так далее).

Поиск и устранение проблем

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

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

Группа: Перегрузка
Категория: Необходимый, Автоматизированный
Введенный в R2020a