Index: boost/dynamic_bitset/dynamic_bitset.hpp =================================================================== --- boost/dynamic_bitset/dynamic_bitset.hpp (revision 78800) +++ boost/dynamic_bitset/dynamic_bitset.hpp (working copy) @@ -39,6 +39,7 @@ #include "boost/static_assert.hpp" #include "boost/limits.hpp" #include "boost/pending/lowest_bit.hpp" +#include "boost/move/move.hpp" namespace boost { @@ -207,6 +208,17 @@ void swap(dynamic_bitset& b); dynamic_bitset& operator=(const dynamic_bitset& b); +# ifndef BOOST_NO_RVALUE_REFERENCES + //========================================================================== + //= Move semantics + //========================================================================== + + dynamic_bitset(dynamic_bitset&& src); + + dynamic_bitset& operator = (dynamic_bitset&& src) ; + //========================================================================== +# endif // BOOST_NO_RVALUE_REFERENCES + allocator_type get_allocator() const; // size changing operations @@ -633,7 +645,27 @@ return *this; } +# ifndef BOOST_NO_RVALUE_REFERENCES + +// Move semantics template +inline dynamic_bitset::dynamic_bitset(dynamic_bitset&& src) + : m_bits(boost::move(src.m_bits)), m_num_bits(src.m_num_bits) +{ + src.m_num_bits = 0; +} + +template +inline dynamic_bitset& dynamic_bitset:: + operator = (dynamic_bitset&& src) +{ + swap(src); + return *this; +} + +# endif // BOOST_NO_RVALUE_REFERENCES + +template inline typename dynamic_bitset::allocator_type dynamic_bitset::get_allocator() const {