1 /*============================================================================= 2 Copyright (c) 2007 Tobias Schwinger 3 4 Distributed under the Boost Software License, Version 1.0. (See accompanying 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 ==============================================================================*/ 7 8 #if !defined(BOOST_FUSION_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED) 9 #define BOOST_FUSION_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED 10 11 #include <boost/fusion/support/config.hpp> 12 #include <boost/fusion/iterator/deref.hpp> 13 14 namespace boost { namespace fusion 15 { 16 struct repetitive_view_iterator_tag; 17 18 namespace extension 19 { 20 template<typename Tag> 21 struct deref_impl; 22 23 template<> 24 struct deref_impl<repetitive_view_iterator_tag> 25 { 26 template<typename Iterator> 27 struct apply 28 { 29 typedef typename 30 result_of::deref<typename Iterator::pos_type>::type 31 type; 32 33 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED callboost::fusion::extension::deref_impl::apply34 static type call(Iterator const& i) 35 { 36 return *i.pos; 37 } 38 }; 39 }; 40 41 } 42 43 }} 44 45 #endif 46 47