Спецификаторы 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
постоянный указатель.Средство проверки отмечает ситуации где const
или volatile
спецификаторы помещаются на левой стороне типов данных, заданных через typedef
или using
операторы.
Средство проверки отмечает и указатель и неуказательные типы данных.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Выражения |