1 // Boost.Assign library 2 // 3 // Copyright Thorsten Ottosen 2003-2004. Use, modification and 4 // distribution is subject to the Boost Software License, Version 5 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt) 7 // 8 // For more information, see http://www.boost.org/libs/assign/ 9 // 10 11 #ifndef BOOST_ASSIGN_STD_STACK_HPP 12 #define BOOST_ASSIGN_STD_STACK_HPP 13 14 #if defined(_MSC_VER) 15 # pragma once 16 #endif 17 18 #include <boost/assign/list_inserter.hpp> 19 #include <boost/config.hpp> 20 #include <boost/move/utility.hpp> 21 #include <stack> 22 23 namespace boost 24 { 25 namespace assign 26 { 27 #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) 28 29 template< class V, class C, class V2 > 30 inline list_inserter< assign_detail::call_push< std::stack<V,C> >, V > operator +=(std::stack<V,C> & c,V2 v)31 operator+=( std::stack<V,C>& c, V2 v ) 32 { 33 return push( c )( v ); 34 } 35 36 #else 37 38 template< class V, class C, class V2 > 39 inline list_inserter< assign_detail::call_push< std::stack<V, C> >, V > 40 operator+=(std::stack<V, C>& c, V2&& v) 41 { 42 return push(c)(boost::forward<V2>(v)); 43 } 44 45 #endif 46 } 47 } 48 49 #endif 50