Ticket #11620: boost_ptr_no_auto.patch

File boost_ptr_no_auto.patch, 20.6 KB (added by Jacek Sieka <arnetheduck@…>, 7 years ago)

BOOST_NO_AUTO_PTR support for ptr_container (doesn't cover test suite)

  • boost/ptr_container/detail/associative_ptr_container.hpp

    diff -ur boost_1_60_0/boost/ptr_container/detail/associative_ptr_container.hpp boost_1_60_0_no_auto/boost/ptr_container/detail/associative_ptr_container.hpp
    old new  
    103103         : base_type( first, last, hash, pred, a )
    104104        { }
    105105       
     106#ifndef BOOST_NO_AUTO_PTR
    106107        template< class PtrContainer >
    107108        explicit associative_ptr_container( std::auto_ptr<PtrContainer> r )
    108109         : base_type( r )
    109110        { }
     111#endif
    110112
    111113        associative_ptr_container( const associative_ptr_container& r )
    112114         : base_type( r.begin(), r.end(), container_type() )
     
    117119         : base_type( r.begin(), r.end(), container_type() )
    118120        { }
    119121       
     122#ifndef BOOST_NO_AUTO_PTR
    120123        template< class PtrContainer >
    121124        associative_ptr_container& operator=( std::auto_ptr<PtrContainer> r ) // nothrow
    122125        {
    123126           base_type::operator=( r );
    124127           return *this;
    125128        }
     129#endif
    126130       
    127131        associative_ptr_container& operator=( associative_ptr_container r ) // strong
    128132        {
  • boost/ptr_container/detail/reversible_ptr_container.hpp

    diff -ur boost_1_60_0/boost/ptr_container/detail/reversible_ptr_container.hpp boost_1_60_0_no_auto/boost/ptr_container/detail/reversible_ptr_container.hpp
    old new  
    337337         : c_( a )
    338338        { }
    339339       
     340#ifndef BOOST_NO_AUTO_PTR
    340341        template< class PtrContainer >
    341342        explicit reversible_ptr_container( std::auto_ptr<PtrContainer> clone )               
    342343        {
    343344            swap( *clone );
    344345        }
     346#endif
    345347
    346348        reversible_ptr_container( const reversible_ptr_container& r )
    347349        {
     
    354356            constructor_impl( r.begin(), r.end(), std::forward_iterator_tag() );
    355357        }
    356358
     359#ifndef BOOST_NO_AUTO_PTR
    357360        template< class PtrContainer >
    358361        reversible_ptr_container& operator=( std::auto_ptr<PtrContainer> clone ) // nothrow
    359362        {
    360363            swap( *clone );
    361364            return *this;
    362365        }
     366#endif
    363367
    364368        reversible_ptr_container& operator=( reversible_ptr_container r ) // strong
    365369        {
     
    568572            return res;
    569573        }
    570574
     575#ifndef BOOST_NO_AUTO_PTR
    571576        template< class U >
    572577        iterator insert( iterator before, std::auto_ptr<U> x )
    573578        {
    574579            return insert( before, x.release() );
    575580        }
    576 
     581#endif
    577582        iterator erase( iterator x ) // nothrow
    578583        {
    579584            BOOST_ASSERT( !empty() );
     
    632637            return boost::ptr_container_detail::move( old );
    633638        }
    634639
     640#ifndef BOOST_NO_AUTO_PTR
    635641        template< class U >
    636642        auto_type replace( iterator where, std::auto_ptr<U> x )
    637643        {
    638644            return replace( where, x.release() );
    639645        }
    640 
     646#endif
    641647        auto_type replace( size_type idx, Ty_* x ) // strong
    642648        {
    643649            enforce_null_policy( x, "Null pointer in 'replace()'" );
     
    652658            return boost::ptr_container_detail::move( old );
    653659        }
    654660
     661#ifndef BOOST_NO_AUTO_PTR
    655662        template< class U >
    656663        auto_type replace( size_type idx, std::auto_ptr<U> x )
    657664        {
    658665            return replace( idx, x.release() );
    659666        }
    660                
     667#endif
     668
    661669    }; // 'reversible_ptr_container'
    662670
    663671
     
    677685    // two-phase lookup of template functions
    678686    // is buggy on most compilers, so we use a macro instead
    679687    //
     688
     689#ifndef BOOST_NO_AUTO_PTR
     690
    680691#define BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( PC, base_type, this_type ) \
    681692    explicit PC( std::auto_ptr<this_type> r )       \
    682693    : base_type ( r ) { }                           \
     
    700711       return std::auto_ptr<this_type>( new this_type( this->begin(), this->end() ) ); \
    701712    }
    702713
     714#else
     715
     716#define BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( PC, base_type, this_type )
     717
     718#endif
     719
    703720#define BOOST_PTR_CONTAINER_DEFINE_COPY_CONSTRUCTORS( PC, base_type ) \
    704721                                                                      \
    705722    template< class U >                                               \
     
    725742    PC( InputIterator first, InputIterator last,                                       \
    726743        const allocator_type& a ) : base_type( first, last, a ) {} 
    727744                 
     745
    728746#define BOOST_PTR_CONTAINER_DEFINE_NON_INHERITED_MEMBERS( PC, base_type, this_type )           \
    729747   BOOST_PTR_CONTAINER_DEFINE_CONSTRUCTORS( PC, base_type )                                    \
    730748   BOOST_PTR_CONTAINER_DEFINE_RELEASE_AND_CLONE( PC, base_type, this_type )
  • boost/ptr_container/ptr_array.hpp

    diff -ur boost_1_60_0/boost/ptr_container/ptr_array.hpp boost_1_60_0_no_auto/boost/ptr_container/ptr_array.hpp
    old new  
    100100                                        static_cast<const T*>( &r[i] ) );
    101101        }
    102102
     103#ifndef BOOST_NO_AUTO_PTR
    103104        explicit ptr_array( std::auto_ptr<this_type> r )
    104105        : base_class( r ) { }
     106#endif
    105107
    106108        ptr_array& operator=( ptr_array r )
    107109        {
     
    109111            return *this;           
    110112        }
    111113
     114#ifndef BOOST_NO_AUTO_PTR
    112115        ptr_array& operator=( std::auto_ptr<this_type> r )
    113116        {
    114117            base_class::operator=(r);
     
    132135            }
    133136            return pa;
    134137        }
     138#endif
    135139
    136140    private: // hide some members
    137141        using base_class::insert;
     
    157161            return boost::ptr_container::move(res);                // nothrow
    158162        }
    159163
     164#ifndef BOOST_NO_AUTO_PTR
    160165        template< size_t idx, class V >
    161166        auto_type replace( std::auto_ptr<V> r )
    162167        {
    163168            return replace<idx>( r.release() );
    164169        }
     170#endif
    165171
    166172        auto_type replace( size_t idx, U* r ) // strong
    167173        {
     
    177183            return boost::ptr_container::move(res);                // nothrow
    178184        }
    179185
     186#ifndef BOOST_NO_AUTO_PTR
    180187        template< class V >
    181188        auto_type replace( size_t idx, std::auto_ptr<V> r )
    182189        {
    183190            return replace( idx, r.release() );
    184191        }
     192#endif
    185193
    186194        using base_class::at;
    187195
  • boost/ptr_container/ptr_circular_buffer.hpp

    diff -ur boost_1_60_0/boost/ptr_container/ptr_circular_buffer.hpp boost_1_60_0_no_auto/boost/ptr_container/ptr_circular_buffer.hpp
    old new  
    293293            this->base().push_back( ptr );           
    294294        }
    295295
     296#ifndef BOOST_NO_AUTO_PTR
    296297        template< class U >
    297298        void push_back( std::auto_ptr<U> ptr ) // nothrow
    298299        {
    299300            push_back( ptr.release() );
    300301        }
     302#endif
    301303
    302304        void push_front( value_type ptr ) // nothrow
    303305        {
     
    310312            this->base().push_front( ptr );           
    311313        }
    312314
     315#ifndef BOOST_NO_AUTO_PTR
    313316        template< class U >
    314317        void push_front( std::auto_ptr<U> ptr ) // nothrow
    315318        {
    316319            push_front( ptr.release() );
    317320        }
     321#endif
    318322
    319323        iterator insert( iterator pos, value_type ptr ) // nothrow
    320324        {
     
    334338            return this->base().insert( pos.base(), ptr );
    335339        }
    336340
     341#ifndef BOOST_NO_AUTO_PTR
    337342        template< class U >
    338343        iterator insert( iterator pos, std::auto_ptr<U> ptr ) // nothrow
    339344        {
    340345            return insert( pos, ptr.release() );
    341346        }
     347#endif
    342348
    343349        template< class InputIterator >
    344350        void insert( iterator pos, InputIterator first, InputIterator last ) // basic
     
    377383            return this->base().rinsert( pos.base(), ptr );
    378384        }
    379385
     386#ifndef BOOST_NO_AUTO_PTR
    380387        template< class U >
    381388        iterator rinsert( iterator pos, std::auto_ptr<U> ptr ) // nothrow
    382389        {
    383390            return rinsert( pos, ptr.release() );
    384391        }
    385 
     392#endif
    386393 
    387394        template< class InputIterator >
    388395        void rinsert( iterator pos, InputIterator first, InputIterator last ) // basic
  • boost/ptr_container/ptr_inserter.hpp

    diff -ur boost_1_60_0/boost/ptr_container/ptr_inserter.hpp boost_1_60_0_no_auto/boost/ptr_container/ptr_inserter.hpp
    old new  
    7373            return *this;
    7474        }
    7575
     76#ifndef BOOST_NO_AUTO_PTR
    7677        template< class T >
    7778        ptr_back_insert_iterator&
    7879        operator=( std::auto_ptr<T> r )
     
    8081            container->push_back( r );
    8182            return *this;
    8283        }
     84#endif
    8385
    8486        ptr_back_insert_iterator&
    8587        operator=( typename PtrContainer::const_reference r )
     
    133135            return *this;
    134136        }
    135137
     138#ifndef BOOST_NO_AUTO_PTR
    136139        template< class T >
    137140        ptr_front_insert_iterator&
    138141        operator=( std::auto_ptr<T> r )
     
    140143            container->push_front( r );
    141144            return *this;
    142145        }
    143        
     146#endif
     147
    144148        ptr_front_insert_iterator&
    145149        operator=( typename PtrContainer::const_reference r )
    146150        {
     
    194198            return *this;
    195199        }
    196200
     201#ifndef BOOST_NO_AUTO_PTR
    197202        template< class T >
    198203        ptr_insert_iterator&
    199204        operator=( std::auto_ptr<T> r )
     
    201206            iter = container->insert( iter, r );
    202207            return *this;
    203208        }
     209#endif
    204210       
    205211        ptr_insert_iterator&
    206212        operator=( typename PtrContainer::const_reference r )
  • boost/ptr_container/ptr_map_adapter.hpp

    diff -ur boost_1_60_0/boost/ptr_container/ptr_map_adapter.hpp boost_1_60_0_no_auto/boost/ptr_container/ptr_map_adapter.hpp
    old new  
    260260                              const Allocator& a )
    261261         : base_type( first, last, hash, pred, a )
    262262        { }
    263                
     263
     264#ifndef BOOST_NO_AUTO_PTR
    264265        template< class PtrContainer >
    265266        explicit ptr_map_adapter_base( std::auto_ptr<PtrContainer> clone )
    266267        : base_type( clone )
    267268        { }
    268        
     269
    269270        template< typename PtrContainer >
    270271        ptr_map_adapter_base& operator=( std::auto_ptr<PtrContainer> clone )   
    271272        {
    272273            base_type::operator=( clone );
    273274            return *this;
    274275        }       
    275 
     276#endif
    276277        iterator find( const key_type& x )                                               
    277278        {                                                                           
    278279            return iterator( this->base().find( x ) );                               
     
    357358            return boost::ptr_container::move( old );
    358359        }
    359360
     361#ifndef BOOST_NO_AUTO_PTR
    360362        template< class U >
    361363        auto_type replace( iterator where, std::auto_ptr<U> x )
    362364        {
    363365            return replace( where, x.release() );
    364366        }
     367#endif
    365368
    366369    protected:
    367370        size_type bucket( const key_type& key ) const
     
    487490            map_basic_clone_and_insert( r.begin(), r.end() );     
    488491        }
    489492       
     493#ifndef BOOST_NO_AUTO_PTR
    490494        template< class U >
    491495        ptr_map_adapter( std::auto_ptr<U> r ) : base_type( r )
    492496        { }
    493 
     497#endif
    494498        ptr_map_adapter& operator=( ptr_map_adapter r )
    495499        {
    496500            this->swap( r );
    497501            return *this;
    498502        }
    499503
     504#ifndef BOOST_NO_AUTO_PTR
    500505        template< class U >
    501506        ptr_map_adapter& operator=( std::auto_ptr<U> r )
    502507        { 
    503508            base_type::operator=( r );
    504509            return *this;
    505510        }
    506 
     511#endif
    507512        using base_type::release;
    508513
    509514        template< typename InputIterator >
     
    550555            return insert_impl( key, x );
    551556        }
    552557
     558#ifndef BOOST_NO_AUTO_PTR
    553559        template< class U >
    554560        std::pair<iterator,bool> insert( const key_type& key, std::auto_ptr<U> x )
    555561        {
    556562            return insert_impl( key, x.release() );
    557563        }
    558 
     564#endif
    559565        template< class F, class S >
    560566        iterator insert( iterator before, ptr_container_detail::ref_pair<F,S> p ) // strong
    561567        {
     
    577583            return insert_impl( before, key, x );
    578584        }
    579585
     586#ifndef BOOST_NO_AUTO_PTR
    580587        template< class U >
    581588        iterator insert( iterator before, const key_type& key, std::auto_ptr<U> x ) // strong
    582589        {
    583590            return insert_impl( before, key, x.release() );
    584591        }
    585        
     592#endif
     593
    586594        template< class PtrMapAdapter >
    587595        bool transfer( BOOST_DEDUCED_TYPENAME PtrMapAdapter::iterator object,
    588596                       PtrMapAdapter& from ) // strong
     
    736744            map_basic_clone_and_insert( r.begin(), r.end() );     
    737745        }
    738746       
     747#ifndef BOOST_NO_AUTO_PTR
    739748        template< class U >
    740749        explicit ptr_multimap_adapter( std::auto_ptr<U> r ) : base_type( r )
    741750        { }
     751#endif
    742752
    743753        ptr_multimap_adapter& operator=( ptr_multimap_adapter r )
    744754        {
     
    746756            return *this;
    747757        }
    748758
     759#ifndef BOOST_NO_AUTO_PTR
    749760        template< class U >
    750761        ptr_multimap_adapter& operator=( std::auto_ptr<U> r )
    751762        { 
    752763            base_type::operator=( r );
    753764            return *this;
    754765        }
     766#endif
    755767
    756768        using base_type::release;
    757769
     
    799811            return insert_impl( key, x );
    800812        }
    801813
     814#ifndef BOOST_NO_AUTO_PTR
    802815        template< class U >
    803816        iterator insert( const key_type& key, std::auto_ptr<U> x )
    804817        {
    805818            return insert_impl( key, x.release() );
    806819        }
    807 
     820#endif
    808821        template< class F, class S >
    809822        iterator insert( iterator before, ptr_container_detail::ref_pair<F,S> p ) // strong
    810823        {
     
    820833            return insert_impl( before, key, x );
    821834        }
    822835
     836#ifndef BOOST_NO_AUTO_PTR
    823837        template< class U >
    824838        iterator insert( iterator before, const key_type& key, std::auto_ptr<U> x ) // strong
    825839        {
    826840            return insert_impl( before, key, x.release() );
    827841        }
     842#endif
    828843       
    829844        template< class PtrMapAdapter >
    830845        void transfer( BOOST_DEDUCED_TYPENAME PtrMapAdapter::iterator object,
  • boost/ptr_container/ptr_sequence_adapter.hpp

    diff -ur boost_1_60_0/boost/ptr_container/ptr_sequence_adapter.hpp boost_1_60_0_no_auto/boost/ptr_container/ptr_sequence_adapter.hpp
    old new  
    219219          : base_type( r, tag )
    220220        { }
    221221       
     222#ifndef BOOST_NO_AUTO_PTR
    222223        template< class PtrContainer >
    223224        explicit ptr_sequence_adapter( std::auto_ptr<PtrContainer> clone )
    224225          : base_type( clone )
    225226        { }
    226 
     227#endif
    227228        ptr_sequence_adapter& operator=( const ptr_sequence_adapter r )
    228229        {
    229230            this->swap( r );
    230231            return *this;
    231232        }
    232233       
     234#ifndef BOOST_NO_AUTO_PTR
    233235        template< class PtrContainer >
    234236        ptr_sequence_adapter& operator=( std::auto_ptr<PtrContainer> clone )   
    235237        {
    236238            base_type::operator=( clone );
    237239            return *this;
    238240        }
    239 
     241#endif
    240242        /////////////////////////////////////////////////////////////
    241243        // modifiers
    242244        /////////////////////////////////////////////////////////////
     
    250252            ptr.release();                // nothrow
    251253        }
    252254
     255#ifndef BOOST_NO_AUTO_PTR
    253256        template< class U >
    254257        void push_back( std::auto_ptr<U> x )
    255258        {
    256259            push_back( x.release() );
    257260        }
    258        
     261#endif
     262
    259263        void push_front( value_type x )               
    260264        {
    261265            this->enforce_null_policy( x, "Null pointer in 'push_front()'" );
     
    265269            ptr.release();                // nothrow
    266270        }
    267271
     272#ifndef BOOST_NO_AUTO_PTR
    268273        template< class U >
    269274        void push_front( std::auto_ptr<U> x )
    270275        {
    271276            push_front( x.release() );
    272277        }
    273 
     278#endif
    274279        auto_type pop_back()
    275280        {
    276281            BOOST_ASSERT( !this->empty() &&
  • boost/ptr_container/ptr_set_adapter.hpp

    diff -ur boost_1_60_0/boost/ptr_container/ptr_set_adapter.hpp boost_1_60_0_no_auto/boost/ptr_container/ptr_set_adapter.hpp
    old new  
    182182          : base_type( r )
    183183        { }
    184184               
     185#ifndef BOOST_NO_AUTO_PTR
    185186        template< class PtrContainer >
    186187        explicit ptr_set_adapter_base( std::auto_ptr<PtrContainer> clone )
    187188         : base_type( clone )
    188189        { }
    189        
     190#endif
     191
    190192        ptr_set_adapter_base& operator=( ptr_set_adapter_base r )
    191193        {
    192194            this->swap( r );
    193195            return *this;
    194196        }
    195197       
     198#ifndef BOOST_NO_AUTO_PTR
    196199        template< typename PtrContainer >
    197200        ptr_set_adapter_base& operator=( std::auto_ptr<PtrContainer> clone )   
    198201        {
    199202            base_type::operator=( clone );
    200203            return *this;
    201204        }
     205#endif
    202206
    203207        using base_type::erase;
    204208       
     
    385389          : base_type( r )
    386390        { }
    387391       
     392#ifndef BOOST_NO_AUTO_PTR
    388393        template< class PtrContainer >
    389394        explicit ptr_set_adapter( std::auto_ptr<PtrContainer> clone )
    390395         : base_type( clone )
    391396        { }
    392 
     397#endif
    393398        template< class U, class Set, class CA, bool b >
    394399        ptr_set_adapter& operator=( const ptr_set_adapter<U,Set,CA,b>& r )
    395400        {
     
    397402            return *this;
    398403        }
    399404
     405#ifndef BOOST_NO_AUTO_PTR
    400406        template< class T >
    401407        void operator=( std::auto_ptr<T> r )
    402408        {
    403409            base_type::operator=( r );
    404410        }
    405 
     411#endif
    406412        std::pair<iterator,bool> insert( key_type* x ) // strong                     
    407413        {       
    408414            this->enforce_null_policy( x, "Null pointer in 'ptr_set::insert()'" );
     
    415421            return std::make_pair( iterator( res.first ), res.second );     
    416422        }
    417423
     424#ifndef BOOST_NO_AUTO_PTR
    418425        template< class U >
    419426        std::pair<iterator,bool> insert( std::auto_ptr<U> x )
    420427        {
    421428            return insert( x.release() );
    422429        }
    423 
     430#endif
    424431       
    425432        iterator insert( iterator where, key_type* x ) // strong
    426433        {
     
    434441            return iterator( res);
    435442        }
    436443
     444#ifndef BOOST_NO_AUTO_PTR
    437445        template< class U >
    438446        iterator insert( iterator where, std::auto_ptr<U> x )
    439447        {
    440448            return insert( where, x.release() );
    441449        }
    442        
     450#endif
     451
    443452        template< typename InputIterator >
    444453        void insert( InputIterator first, InputIterator last ) // basic
    445454        {
     
    585594          : base_type( r )
    586595        { }
    587596       
     597#ifndef BOOST_NO_AUTO_PTR
    588598        template< class PtrContainer >
    589599        explicit ptr_multiset_adapter( std::auto_ptr<PtrContainer> clone )
    590600         : base_type( clone )
    591601        { }
    592 
     602#endif
    593603        template< class U, class Set, class CA, bool b >
    594604        ptr_multiset_adapter& operator=( const ptr_multiset_adapter<U,Set,CA,b>& r )
    595605        {
     
    597607            return *this;
    598608        }
    599609       
     610#ifndef BOOST_NO_AUTO_PTR
    600611        template< class T >
    601612        void operator=( std::auto_ptr<T> r )
    602613        {
    603614            base_type::operator=( r );
    604615        }
    605 
     616#endif
    606617        iterator insert( iterator before, key_type* x ) // strong 
    607618        {
    608619            return base_type::insert( before, x );
    609620        }
    610621
     622#ifndef BOOST_NO_AUTO_PTR
    611623        template< class U >
    612624        iterator insert( iterator before, std::auto_ptr<U> x )
    613625        {
    614626            return insert( before, x.release() );
    615627        }
    616    
     628#endif
     629
    617630        iterator insert( key_type* x ) // strong                                     
    618631        {   
    619632            this->enforce_null_policy( x, "Null pointer in 'ptr_multiset::insert()'" );
     
    625638            return iterator( res );                                             
    626639        }
    627640
     641#ifndef BOOST_NO_AUTO_PTR
    628642        template< class U >
    629643        iterator insert( std::auto_ptr<U> x )
    630644        {
    631645            return insert( x.release() );
    632646        }
     647#endif
    633648   
    634649        template< typename InputIterator >
    635650        void insert( InputIterator first, InputIterator last ) // basic