require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_POINTER_H)) {
    eval 'sub _POINTER_H () {1;}' unless defined(&_POINTER_H);
    require 'iosfwd';
    require 'bits/stl_iterator_base_types.ph';
    require 'ext/cast.ph';
    require 'ext/type_traits.ph';
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
	require 'bits/move.ph';
	require 'bits/ptr_traits.ph';
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) > 201703) {
	require 'iterator';
    }
    if(defined(&_GLIBCXX_USE_LONG_LONG)) {
    } else {
    }
    if(defined(&_GLIBCXX_USE_LONG_LONG)) {
    } else {
    }
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
    } else {
    }
    eval 'sub _CXX_POINTER_ARITH_OPERATOR_SET {
        my($INT_TYPE) = @_;
	    eval q( &inline  &friend  &_Pointer_adapter  &operator+( &const  &_Pointer_adapter&  &__lhs, $INT_TYPE  &__offset) {  &return  &_Pointer_adapter( ($__lhs->{get})() +  &__offset); }  &inline  &friend  &_Pointer_adapter  &operator+($INT_TYPE  &__offset,  &const  &_Pointer_adapter&  &__rhs) {  &return  &_Pointer_adapter( ($__rhs->{get})() +  &__offset); }  &inline  &friend  &_Pointer_adapter  &operator-( &const  &_Pointer_adapter&  &__lhs, $INT_TYPE  &__offset) {  &return  &_Pointer_adapter( ($__lhs->{get})() -  &__offset); }  &inline  &_Pointer_adapter&  &operator+=($INT_TYPE  &__offset) {  &_Storage_policy:: &set( &_Storage_policy:: &get() +  &__offset);  &return * &this; }  &inline  &_Pointer_adapter&  &operator-=($INT_TYPE  &__offset) {  &_Storage_policy:: &set( &_Storage_policy:: &get() -  &__offset);  &return * &this; });
    }' unless defined(&_CXX_POINTER_ARITH_OPERATOR_SET);
    if(defined(&_GLIBCXX_USE_LONG_LONG)) {
    }
    if((defined(&__cpp_lib_three_way_comparison) ? &__cpp_lib_three_way_comparison : undef)) {
    }
    eval 'sub _GCC_CXX_POINTER_COMPARISON_OPERATION_SET {
        my($OPERATOR) = @_;
	    eval q( &template< &typename  &_Tp1,  &typename  &_Tp2>  &inline  &bool  &operator $OPERATOR( &const  &_Pointer_adapter< &_Tp1>&  &__lhs,  &_Tp2  &__rhs) {  &return  ($__lhs->{get})() $OPERATOR  &__rhs; }  &template< &typename  &_Tp1,  &typename  &_Tp2>  &inline  &bool  &operator $OPERATOR( &_Tp1  &__lhs,  &const  &_Pointer_adapter< &_Tp2>&  &__rhs) {  &return  &__lhs $OPERATOR  ($__rhs->{get})(); }  &template< &typename  &_Tp1,  &typename  &_Tp2>  &inline  &bool  &operator $OPERATOR( &const  &_Pointer_adapter< &_Tp1>&  &__lhs,  &const  &_Pointer_adapter< &_Tp2>&  &__rhs) {  &return  ($__lhs->{get})() $OPERATOR  ($__rhs->{get})(); });
    }' unless defined(&_GCC_CXX_POINTER_COMPARISON_OPERATION_SET);
    if((defined(&__cplusplus) ? &__cplusplus : undef) >= 201103) {
	if((defined(&__cpp_lib_concepts) ? &__cpp_lib_concepts : undef)) {
	}
    }
}
1;
