1 /*============================================================================= 2 Copyright (c) 2005-2013 Joel de Guzman 3 Copyright (c) 2006 Dan Marsden 4 5 Distributed under the Boost Software License, Version 1.0. (See accompanying 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 ==============================================================================*/ 8 #if !defined(FUSION_CONVERT_20061213_2207) 9 #define FUSION_CONVERT_20061213_2207 10 11 #include <boost/fusion/support/config.hpp> 12 #include <boost/fusion/container/deque/detail/convert_impl.hpp> 13 #include <boost/fusion/container/deque/deque.hpp> 14 15 #if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) 16 /////////////////////////////////////////////////////////////////////////////// 17 // C++03 (non-variadic) implementation 18 /////////////////////////////////////////////////////////////////////////////// 19 #include <boost/fusion/container/deque/detail/cpp03/build_deque.hpp> 20 21 #else 22 /////////////////////////////////////////////////////////////////////////////// 23 // C++11 variadic implementation 24 /////////////////////////////////////////////////////////////////////////////// 25 #include <boost/fusion/container/deque/detail/build_deque.hpp> 26 27 namespace boost { namespace fusion 28 { 29 namespace result_of 30 { 31 template <typename Sequence> 32 struct as_deque : 33 detail::build_deque< 34 typename result_of::begin<Sequence>::type 35 , typename result_of::end<Sequence>::type 36 > 37 { 38 }; 39 } 40 41 template <typename Sequence> 42 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED 43 inline typename result_of::as_deque<Sequence>::type as_deque(Sequence & seq)44 as_deque(Sequence& seq) 45 { 46 typedef result_of::as_deque<Sequence> gen; 47 return gen::call(fusion::begin(seq), fusion::end(seq)); 48 } 49 50 template <typename Sequence> 51 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED 52 inline typename result_of::as_deque<Sequence const>::type as_deque(Sequence const & seq)53 as_deque(Sequence const& seq) 54 { 55 typedef result_of::as_deque<Sequence const> gen; 56 return gen::call(fusion::begin(seq), fusion::end(seq)); 57 } 58 }} 59 60 #endif 61 #endif 62