/*============================================================================= Copyright (c) 2001-2009 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_OCTOBER_4_2009_920PM) #define BOOST_FUSION_AT_IMPL_OCTOBER_4_2009_920PM #include #include #include namespace boost { namespace fusion { struct class_tag; namespace extension { template struct at_impl; template struct class_member; template struct class_size; template <> struct at_impl { template struct apply { static int const n_value = N::value; BOOST_MPL_ASSERT_RELATION( n_value, <=, extension::class_size::value); typedef typename extension::class_member element; typedef typename mpl::if_< is_const , typename class_member::get_type , typename class_member::proxy >::type type; static type call(Sequence& seq) { return extension:: class_member::call(seq); } //~ static typename class_member::get_type //~ call(Sequence const& seq) //~ { //~ return extension:: //~ class_member::call(seq); //~ } }; }; } }} #endif