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