Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / fusion / adapted / struct / detail / at_impl.hpp
1 /*=============================================================================
2     Copyright (c) 2001-2011 Joel de Guzman
3     Copyright (c) 2005-2006 Dan Marsden
4     Copyright (c) 2009-2010 Christopher Schmidt
5
6     Distributed under the Boost Software License, Version 1.0. (See accompanying
7     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 ==============================================================================*/
9
10 #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP
11 #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP
12
13 #include <boost/fusion/support/config.hpp>
14 #include <boost/mpl/int.hpp>
15
16 namespace boost { namespace fusion { namespace extension
17 {
18     template<typename>
19     struct at_impl;
20
21     template <>
22     struct at_impl<struct_tag>
23     {
24         template <typename Seq, typename N>
25         struct apply
26           : access::struct_member<
27                 typename remove_const<Seq>::type
28               , N::value
29             >::template apply<Seq>
30         {};
31     };
32
33     template <>
34     struct at_impl<assoc_struct_tag>
35       : at_impl<struct_tag>
36     {};
37 }}}
38
39 #endif