1 /*============================================================================= 2 Copyright (c) 2009-2010 Christopher Schmidt 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 #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_IMPL_HPP 9 #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEREF_IMPL_HPP 10 11 namespace boost { namespace fusion { namespace extension 12 { 13 template <typename> 14 struct deref_impl; 15 16 template <> 17 struct deref_impl<struct_iterator_tag> 18 { 19 template <typename It> 20 struct apply 21 { 22 typedef typename 23 access::struct_member< 24 typename remove_const<typename It::seq_type>::type 25 , It::index::value 26 >::template apply<typename It::seq_type> 27 impl; 28 29 typedef typename impl::type type; 30 31 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED 32 static type callboost::fusion::extension::deref_impl::apply33 call(It const& it) 34 { 35 return impl::call(*it.seq); 36 } 37 }; 38 }; 39 }}} 40 41 #endif 42