////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2008-2009. 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) // // See http://www.boost.org/libs/container for documentation. // ////////////////////////////////////////////////////////////////////////////// #ifndef BOOST_CONTAINERS_DETAIL_STORED_REF_HPP #define BOOST_CONTAINERS_DETAIL_STORED_REF_HPP #include "config_begin.hpp" #include INCLUDE_BOOST_CONTAINER_DETAIL_WORKAROUND_HPP #ifndef BOOST_NO_RVALUE_REFERENCES namespace boost{ namespace container{ namespace containers_detail{ template struct stored_ref { static T && forward(T &t) #ifdef BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES { return t; } #else { return BOOST_CONTAINER_MOVE_NAMESPACE::move(t); } #endif }; template struct stored_ref { static const T && forward(const T &t) #ifdef BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES { return t; } #else { return static_cast(t); } #endif }; template struct stored_ref { static T && forward(T &t) #ifdef BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES { return t; } #else { return BOOST_CONTAINER_MOVE_NAMESPACE::move(t); } #endif }; template struct stored_ref { static const T && forward(const T &t) #ifdef BOOST_MOVE_OLD_RVALUE_REF_BINDING_RULES { return t; } #else { return static_cast(t); } #endif }; template struct stored_ref { static const T & forward(const T &t) { return t; } }; template struct stored_ref { static T & forward(T &t) { return t; } }; } //namespace containers_detail{ } //namespace container{ } //namespace boost{ #else #error "This header can be included only for compiler with rvalue references" #endif //BOOST_NO_RVALUE_REFERENCES #include INCLUDE_BOOST_CONTAINER_DETAIL_CONFIG_END_HPP #endif //BOOST_CONTAINERS_DETAIL_STORED_REF_HPP