1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #//
- #// Boost.Pointer Container
- #//
- #// Copyright Thorsten Ottosen 2003-2005. Use, modification and
- #// distribution is subject to the Boost Software License, Version
- #// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- #// http://www.boost.org/LICENSE_1_0.txt)
- #//
- #// For more information, see http://www.boost.org/libs/ptr_container/
- #//
- 1. use splice() to speed up transfer for list
- 5. small usage exmaple with each class
- 10. update tutorial to show boost::assign link + auto_ptr
- 11. should find_key() be added to ptr_map?
- 13. transfer for set/map may need to
- be revisted (rg. !from.empty() precondition)
- 15. Some of the headlines are too big...
- 18. range-based sort() needs to be provided for list. use stable_sort for this purpose.
- 19. use flat_set,flat_map internally when certain situations arise, eg. when the size of the objects
- is small, eg. 4bytes (does this affect key=string?
- 21. map::at() should throw bad_index
- auto_type skal være converter-bar til std::auto_ptr<U>, if the deleter is
- trivial (heap_clone_allocator)
- (Spørg Thomas Witt om denne ændring can komme med...kan ikke ødelægge existerende kode, som
- vill have kaldt .release()) Kræve en hel del ambiguity resolution pga auto_ptr augument er
- templates og ikke non-templates! Desuden kan vi ikke bruge non-template argument, da alle
- converterings operatorer for auto_ptr tager en & argument og ikke en by-value!!! måske
- skal der blot et hack til, hvor vi tilføjer en ny ukenkt klasse og overloader kun for
- den, og så laver en implicit konvertering til denne i static_move_ptr
- The easiert implementation would be to detect its presence in the
- body of the range based overloads and then dispatch to that implementation.
- 22. hvor gode er kompilere til at optimere release() for en auto_ptr. Hvordan med move_ptr
- and auto_ptr interaction? Contracts må kunne fortælle kompileren at den skal
- genere optimeret kode
- template< class T >
- class auto_ptr
- {
- T* get() const;
- //
- // this expresses that the constructor is a no-op if
- // the condition is true. This might be useful in many other
- // context
- //
- ~auto_ptr()
- precondition { if( get() == 0 ) return; }
- T* release()
- postcondition { get() == 0; }
- }
- ...
- std::auto_ptr<T> p( new T );
- foo( p.release() );
- // don't generate destructor
- Does raw_storage iterator have an impact on in-place consrtcution
|