1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // (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
|