// (C) Copyright Daniel Wallin 2004. | |
// Distributed under 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.) | |
// Contains the definitions of the class template move_source and the function | |
// template move, which together make move pointers moveable. | |
#ifndef BOOST_MOVE_HPP_INCLUDED | |
#define BOOST_MOVE_HPP_INCLUDED | |
namespace boost { namespace ptr_container_detail { | |
namespace move_ptrs { | |
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) | |
#pragma warning(push) | |
#pragma warning(disable:4512) | |
#endif | |
template<typename Ptr> | |
class move_source { | |
public: | |
move_source(Ptr& ptr) : ptr_(ptr) {} | |
Ptr& ptr() const { return ptr_; } | |
private: | |
Ptr& ptr_; | |
move_source(const Ptr&); | |
}; | |
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) | |
#pragma warning(pop) | |
#endif | |
} // End namespace move_ptrs. | |
template<typename T> | |
move_ptrs::move_source<T> move(T& x) | |
{ return move_ptrs::move_source<T>(x); } | |
} // namespace 'ptr_container_detail' | |
} // End namespace boost. | |
#endif // #ifndef BOOST_MOVE_HPP_INCLUDED |