/*============================================================================= Copyright (c) 2001-2007 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(FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM) #define FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM #include namespace boost { namespace fusion { namespace extension { template struct struct_member; template struct struct_size; template struct struct_member { typedef typename add_const::type>::type type; static type& call(Struct const& struct_) { return struct_member::call( const_cast(struct_)); } }; template struct struct_size : struct_size {}; struct no_such_member; template struct struct_assoc_member { typedef no_such_member type; }; template struct struct_assoc_member { typedef typename add_const::type>::type type; static type& call(Struct const& struct_) { return struct_assoc_member::call( const_cast(struct_)); } }; }}} #endif