LINUX.ORG.RU

История изменений

Исправление utf8nowhere, (текущая версия) :

У указателей есть значение. И это не адрес, а, скажем так, смысл указателя. Если был указатель на int, а его скастовали к указателю на float (через reinterpret_cast), то значение указателя не изменилось. Это по-прежнему указатель на int.

(значение указателя это не только указатель на объект какого-то типа)

(Вообще мне сложно сказать, какое значение у указателя, который возвращается malloc-ом.)

С помощью reinterpret_cast можно получать значения из указателя на тип T указатель на тип U, только если эти типы являются pointer-interconvertible, иначе значение указателя не изменяется. Получить указатель со значением «указатель на U» можно std::launder-ом. Естественно, при соблюдении соответствующих условий на отмываемый указатель.

Исходная версия utf8nowhere, :

У указателей есть значение. И это не адрес, а, скажем так, смысл указателя. Если был указатель на int, а его скастовали к указателю на float (через reinterpret_cast), то значение указателя не изменилось. Это по-прежнему указатель на int.

(значение указателя это не только указатель на какой-то тип)

(Вообще мне сложно сказать, какое значение у указателя, который возвращается malloc-ом.)

С помощью reinterpret_cast можно получать значения из указателя на тип T указатель на тип U, только если эти типы являются pointer-interconvertible, иначе значение указателя не изменяется. Получить указатель со значением «указатель на U» можно std::launder-ом. Естественно, при соблюдении соответствующих условий на отмываемый указатель.