/*============================================================================= Copyright (c) 2001-2006 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(BOOST_FUSION_AT_IMPL_24122005_1807) #define BOOST_FUSION_AT_IMPL_24122005_1807 #include #include #include namespace boost { namespace fusion { struct struct_tag; namespace extension { template struct at_impl; template struct struct_member; template struct struct_size; template <> struct at_impl { template struct apply { static int const n_value = N::value; BOOST_MPL_ASSERT_RELATION( n_value, <=, extension::struct_size::value); typedef typename extension::struct_member element; typedef typename mpl::eval_if< is_const , detail::cref_result , detail::ref_result >::type type; static type call(Sequence& seq) { return extension:: struct_member::call(seq); } }; }; } }} #endif