• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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