Умный указатель, который хранит смещение между указателем и объектом, который он указывает. Это позволяет смещение допускает особые свойства, поскольку указатель независим от адреса указателя, если указатель и указатель по-прежнему разделены одним и тем же смещением. Эта функция преобразуетoffset_ptrв интеллектуальный указатель, который может быть размещен в общей памяти и отображаемых в памяти файлах, отображаемых в разных адресах в каждом процессе.
b>Примечание:offset_ptrиспользует определенные свойства реализации, присутствующие в большинстве платформ, по причинам производительности:
Предположим, что представление uintptr_t nullptr равно нулю.
Предполагается, что инкрементирование uintptr_t, полученного из указателя, эквивалентно инкрементированию указателя, а затем преобразованию его обратно в uintptr_t.
Template Parameters
typenamePointedType
Тип указателя.
<
typenameDifferenceType
>
Знаковый целочисленный тип, который может представлять арифметические операции на указателе
<
typenameOffsetType
>
Неподписанный целочисленный тип, который может представлять расстояние между двумя указателями, переинтерпретируемыми как неподписанные целые числа. Этот тип должен быть, по крайней мере, того же размера std::uintptr_t. В некоторых системах возможно взаимодействие между 32- и 64-битными процессами с использованием 64-битных смещений.
<
std::size_tOffsetAlignment
>
Выравнивание типа Offset, хранящегося внутри. В некоторых системах может потребоваться выровнять его до 64 бит, чтобы передавать 32- и 64-битные процессы с использованием 64-битных смещений.
offset_ptr
public
construct/copy/destruct
offset_ptr()noexcept;
Конструктор по умолчанию (нулевой указатель). Никогда не бросай.
offset_ptr(pointerptr)noexcept;
Конструктор из необработанного указателя (позволяет конвертировать указатель «0»). Никогда не бросай.
Конструктор из других<offset_ptr>. Если указатели типов указателей являются конвертируемыми, то кабриолетами будут являться offset_ptrs. Никогда не бросай.
Статья Class template offset_ptr раздела The Boost C++ Libraries BoostBook Documentation Subset Indexes and Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.