AUTOSAR C++14 Rule A7-1-3

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

Описание

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

CV-классификаторы должны располагаться справа от типа, который является typedef или используемым именем.

Объяснение

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

using IntPtr = std::int32_t*;
A 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