AUTOSAR C++14 Rule A7-1-3

Спецификаторы CV должны быть помещены на правой стороне типа, который является определением типа или именем использования

Описание

Управляйте определением

Спецификаторы CV должны быть помещены на правой стороне типа, который является определением типа или именем использования.

Объяснение

Предположим typedef или using оператор задает тип указателя. Например:

using IntPtr = std::int32_t*;
const- проверка типа, записанного как:
const IntPtr ptr = &someValue;
Результаты в этом расширении:
const (std::int32_t*) ptr = &someValue;
В этом выражении, ptr постоянный указатель, который не может быть повторно присвоен другой ячейке памяти. Однако разработчик или рецензент могут ожидать это расширение:
(const std::intr32_t) *ptr = &someValue;
В этом выражении, ptr указатель на константу, что означает что содержимое местоположения что ptr точки к, или *ptr, не может быть изменен.

Чтобы избежать этого беспорядка, поместите const или volatile спецификатор справа от типа данных задан через typedef или using. Например:

IntPtr const ptr = &someValue;
Единственное возможное расширение этого выражения:
std::intr32_t const *ptr = &someValue;
который делает ptr постоянный указатель.

Реализация Polyspace

Средство проверки отмечает ситуации где const или volatile спецификаторы помещаются на левой стороне типов данных, заданных через typedef или using операторы.

Средство проверки отмечает и указатель и неуказательные типы данных.

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

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

Группа: Выражения
Категория: необходимый, автоматизированный
Введенный в R2019a