17 #ifndef BOOST_MOVE_MOVE_UTILITY_CORE_HPP
18 #define BOOST_MOVE_MOVE_UTILITY_CORE_HPP
20 #ifndef BOOST_CONFIG_HPP
24 #if defined(BOOST_HAS_PRAGMA_ONCE)
34 #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MOVE_DOXYGEN_INVOKED)
39 struct enable_move_utility_emulation
41 static const bool value =
true;
53 , enable_move_utility_emulation<T>
54 , has_move_emulation_disabled<T>
64 , enable_move_utility_emulation<T>
65 , has_move_emulation_enabled<T>
75 , enable_move_utility_emulation<T>
76 , has_move_emulation_enabled<T>
92 , enable_move_utility_emulation<T>
93 , ::boost::move_detail::is_rv<T>
97 return const_cast<T&
>(x);
103 , enable_move_utility_emulation<T>
104 , ::boost::move_detail::is_not_rv<T>
120 , enable_move_utility_emulation<T>
121 , ::boost::move_detail::is_rv<T>
125 return const_cast<T&
>(x);
130 < typename ::boost::move_detail::add_lvalue_reference<T>::type
131 , enable_move_utility_emulation<T>
132 , ::boost::move_detail::is_not_rv<T>
135 , has_move_emulation_disabled<T>
146 , enable_move_utility_emulation<T>
147 , ::boost::move_detail::is_not_rv<T>
150 , has_move_emulation_enabled<T>
160 #else //#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_MOVE_DOXYGEN_INVOKED)
162 #if defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE)
194 #if defined(BOOST_MOVE_DOXYGEN_INVOKED)
200 rvalue_reference
move(input_reference) noexcept;
202 #elif defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES)
209 #else //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES
213 {
return static_cast<typename ::boost::move_detail::remove_reference<T>::type &&
>(t); }
215 #endif //BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES
224 #if defined(BOOST_MOVE_DOXYGEN_INVOKED)
225 template <
class T> output_reference
forward(input_reference) noexcept;
237 #elif defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES)
249 {
return static_cast<T&&
>(t); }
256 return static_cast<T&&
>(t);
259 #endif //BOOST_MOVE_DOXYGEN_INVOKED
268 #if defined(BOOST_MOVE_DOXYGEN_INVOKED)
272 #elif defined(BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES)
284 {
return static_cast<T&&
>(t); }
291 return static_cast<T&&
>(t);
294 #endif //BOOST_MOVE_DOXYGEN_INVOKED
298 #endif //#if defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE)
300 #endif //BOOST_NO_CXX11_RVALUE_REFERENCES
302 #if !defined(BOOST_MOVE_DOXYGEN_INVOKED)
305 namespace move_detail{
307 template <
typename T>
313 #endif //#if !defined(BOOST_MOVE_DOXYGEN_INVOKED)
318 #endif //#ifndef BOOST_MOVE_MOVE_UTILITY_CORE_HPP