.TH "__gnu_cxx::_Pointer_adapter< _Storage_policy >" 3cxx "libstdc++" \" -*- nroff -*- .ad l .nh .SH NAME __gnu_cxx::_Pointer_adapter< _Storage_policy > .SH SYNOPSIS .br .PP .PP \fC#include \fP .PP Inherits _Storage_policy\&. .SS "Public Types" .in +1c .ti -1c .RI "typedef \fBstd::ptrdiff_t\fP \fBdifference_type\fP" .br .ti -1c .RI "typedef _Storage_policy::element_type \fBelement_type\fP" .br .ti -1c .RI "typedef \fBstd::random_access_iterator_tag\fP \fBiterator_category\fP" .br .ti -1c .RI "typedef \fB_Pointer_adapter\fP \fBpointer\fP" .br .ti -1c .RI "typedef _Reference_type< element_type >::reference \fBreference\fP" .br .ti -1c .RI "typedef \fB_Unqualified_type\fP< element_type >::type \fBvalue_type\fP" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "template \fB_Pointer_adapter\fP (_Up *__arg)" .br .ti -1c .RI "\fB_Pointer_adapter\fP (const \fB_Pointer_adapter\fP &__arg)" .br .ti -1c .RI "template \fB_Pointer_adapter\fP (const \fB_Pointer_adapter\fP< _Up > &__arg)" .br .ti -1c .RI "\fB_Pointer_adapter\fP (element_type *__arg=0)" .br .ti -1c .RI "\fBoperator bool\fP () const" .br .ti -1c .RI "reference \fBoperator*\fP () const" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator++\fP ()" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator++\fP (int)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (short __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (unsigned int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (unsigned long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (unsigned long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator+=\fP (unsigned short __offset)" .br .ti -1c .RI "template \fBstd::ptrdiff_t\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP< _Up > &__rhs) const" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-\-\fP ()" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\-\fP (int)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (short __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (unsigned int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (unsigned long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (unsigned long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator\-=\fP (unsigned short __offset)" .br .ti -1c .RI "element_type * \fBoperator\->\fP () const" .br .ti -1c .RI "template \fB_Pointer_adapter\fP & \fBoperator=\fP (_Up *__arg)" .br .ti -1c .RI "\fB_Pointer_adapter\fP & \fBoperator=\fP (const \fB_Pointer_adapter\fP &__arg)" .br .ti -1c .RI "template \fB_Pointer_adapter\fP & \fBoperator=\fP (const \fB_Pointer_adapter\fP< _Up > &__arg)" .br .ti -1c .RI "reference \fBoperator[]\fP (\fBstd::ptrdiff_t\fP __index) const" .br .in -1c .SS "Friends" .in +1c .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, short __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned short __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (int __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (long __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (long long __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (short __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (unsigned int __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (unsigned long __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (unsigned long long __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator+\fP (unsigned short __offset, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "template \fBstd::ptrdiff_t\fP \fBoperator\-\fP (_Up *__lhs, const \fB_Pointer_adapter\fP &__rhs)" .br .ti -1c .RI "template \fBstd::ptrdiff_t\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, _Up *__rhs)" .br .ti -1c .RI "\fBstd::ptrdiff_t\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, element_type *__rhs)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, short __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned int __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned long long __offset)" .br .ti -1c .RI "\fB_Pointer_adapter\fP \fBoperator\-\fP (const \fB_Pointer_adapter\fP &__lhs, unsigned short __offset)" .br .ti -1c .RI "\fBstd::ptrdiff_t\fP \fBoperator\-\fP (element_type *__lhs, const \fB_Pointer_adapter\fP &__rhs)" .br .in -1c .SH "Detailed Description" .PP .SS "template .br class __gnu_cxx::_Pointer_adapter< _Storage_policy >"The following provides an 'alternative pointer' that works with the containers when specified as the pointer typedef of the allocator\&. .PP The pointer type used with the containers doesn't have to be this class, but it must support the implicit conversions, pointer arithmetic, comparison operators, etc\&. that are supported by this class, and avoid raising compile-time ambiguities\&. Because creating a working pointer can be challenging, this pointer template was designed to wrapper an easier storage policy type, so that it becomes reusable for creating other pointer types\&. .PP A key point of this class is also that it allows container writers to 'assume' Allocator::pointer is a typedef for a normal pointer\&. This class supports most of the conventions of a true pointer, and can, for instance handle implicit conversion to const and base class pointer types\&. The only impositions on container writers to support extended pointers are: 1) use the Allocator::pointer typedef appropriately for pointer types\&. 2) if you need pointer casting, use the __pointer_cast<> functions from ext/cast\&.h\&. This allows pointer cast operations to be overloaded as necessary by custom pointers\&. .PP Note: The const qualifier works with this pointer adapter as follows: .PP _Tp* == _Pointer_adapter<_Std_pointer_impl<_Tp> >; const _Tp* == _Pointer_adapter<_Std_pointer_impl >; _Tp* const == const _Pointer_adapter<_Std_pointer_impl<_Tp> >; const _Tp* const == const _Pointer_adapter<_Std_pointer_impl >; .SH "Author" .PP Generated automatically by Doxygen for libstdc++ from the source code\&.