pointer_traits- реализация класса C++11 std::pointer_traits с некоторыми расширениями, такими как кастинги.
Pointer_traitsобеспечивает единый интерфейс для определенных атрибутов указателей типа.
Примечание: При определении пользовательского семейства указателей или ссылок, которые будут использоваться с библиотекой BI, убедитесь, что общедоступные статические функции преобразования, доступные через интерфейс<pointer_traits>(<*_cast_from>и<pointer_to>), могут правильно конвертировать между типами Const и nonconst.без использования неявных призывов конструктора. Предполагается, что эти преобразования будут реализованы в виде шаблонов функций, где аргумент шаблона является типом объекта, из которого преобразуется.
pointer_traits
public
types
typedefPtrуказатель;
Тип указателя, запрашиваемый этимpointer_traitsinstantiation
typedefunspecified_typeelement_type;
Ptr::element_type, если такой тип существует; в противном случае T, если Ptr является шаблоном класса, представляет собой форму SomePointer, где Args является нулевым или более аргументами типа; в противном случае специализация плохо сформирована.
typedefunspecified_typedifference_type;
Ptr::difference_type, если такой тип существует; в противном случае std::ptrdiff_t.
typedefunspecifiedrebind;
Ptr::rebind, если такой тип существует; в противном случае, SomePointer, если Ptr представляет собой шаблон классовой инстанциации формы SomePointer, где Args является аргументом нулевого или более типа; в противном случае, инстанциация rebind плохо сформирована.
<
typenamerebind_pointer<U>::type
>
typedefunspecified_typereference;
Ptr::ference if such type exist (non-standard extension); в противном случае element_type &
pointer_traits public static functions
<
staticpointerpointer_to(referencer);
>
Замечание: Если элемент_тип (возможно, cv-квалифицированный) недействителен, r-тип не указан; в противном случае это элемент_тип &.
Возвращение: Предпочтительный указатель на r, полученный путем вызова Ptr::pointer_to(reference). Нестандартное расширение: Если такой функции не существует, возвращает указатель (адрес(r));
Примечание: Для несоответствующих компиляторов проверяется только наличие функции-члена<pointer_to>.
Возврат: Предпочтительный указатель на r, полученный путем вызова функции статического шаблона Ptr::static_cast_from(UPpr/const UPpr &). Если такой функции не существует, возвращает указатель_to(static_cast(*uptr))
Примечание: Для несоответствующих компиляторов проверяется только наличие функции-члена<static_cast_from>.
Возврат: Предпочтительный указатель на r, полученный путем вызова функции статического шаблона Ptr::const_cast_from(UPpr/const UPpr &). Если такой функции не существует, возвращает указатель_to(const_cast(*uptr))
Примечание: Для несоответствующих компиляторов проверяется только наличие функции-члена<const_cast_from>.
Возвращение: Предпочтительный указатель на r, полученный путем вызова функции статического шаблона Ptr::dynamic_cast_from(UPpr/const UPpr&). Если такой функции не существует, возвращает указатель_to(dynamic_cast>(&*uptr)]
Примечание: Для несоответствующих компиляторов проверяется только наличие функции-члена<dynamic_cast_from>.
Статья Struct template pointer_traits раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.