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_VECTOR_HPP 12 #define BOOST_ASSIGN_STD_VECTOR_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 <vector> 22 23 namespace boost 24 { 25 namespace assign 26 { 27 #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) 28 29 template< class V, class A, class V2 > 30 inline list_inserter< assign_detail::call_push_back< std::vector<V,A> >, V > operator +=(std::vector<V,A> & c,V2 v)31 operator+=( std::vector<V,A>& c, V2 v ) 32 { 33 return push_back( c )( v ); 34 } 35 36 #else 37 38 template< class V, class A, class V2 > 39 inline list_inserter< assign_detail::call_push_back< std::vector<V, A> >, V > 40 operator+=( std::vector<V, A>& c, V2&& v ) 41 { 42 return push_back( c )( std::forward<V2>(v) ); 43 } 44 45 #endif 46 } 47 } 48 49 #endif 50