Also "swap" is often the fastest way to move an non POD. I spent some time writing something similar to what you describe...
http://groups.yahoo.com/group/boost/files/move.tar.gz The idea is that you have four ways to move an object depending on whether you need to construct the destination or destroy the source. move_to( destination ) = move_from( source ); move_to_construct( destination ) = move_from( source ); move_to_construct( destination ) = move_from_destroy( source ) move_to( destination ) = move_from_destroy( source ) I started trying to expand on this to work with moving blocks. I am afraid I didn't get very far before more pressing matters came up. I'll see if I can find any more of the code. Hamish On Mon, 2003-08-25 at 12:39, Pavel Vozenilek wrote: > In many cases using memcpy() is faster than copying array of objects one by > one. NTL (http://www.ntllib.org/) claims huge performance gains over STL > using it. > > Type traits library may be extended with: > - memcpy_copyable<> and > - memcpy_moveable<> > > These traits will be specialised for primitive types, pointers, > std::complex, etc. and users will be able to define then for their own > types. Some types may be moveable but not copyable (e.g. typical > std::string). > > Containers and algorithms then can take advantage of memcpy() where > possible. > > While it is possible for each individual library define such a traits, > having them in Boost.TypeTraits would make them (pseudo)standard. > > /Pavel > > > > _______________________________________________ > Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost -- Hamish Mackenzie <[EMAIL PROTECTED]> _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost