/*============================================================================= 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(FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM) #define FUSION_CLASS_EXTENSION_OCTOBER_4_2009_839PM #include namespace boost { namespace fusion { namespace extension { template struct class_member; template struct class_size; template struct class_member : class_member {}; //~ { //~ typedef typename class_member::type type; //~ typedef typename class_member::get_type get_type; //~ typedef typename class_member::proxy proxy; //~ static get_type& //~ call(Class const& class_) //~ { //~ return class_member::call( //~ const_cast(class_)); //~ } //~ }; template struct class_size : class_size {}; struct no_such_member; template struct class_assoc_member { typedef no_such_member type; }; template struct class_assoc_member { typedef typename add_const::type>::type type; static type& call(Class const& class_) { return class_assoc_member::call( const_cast(class_)); } }; }}} #endif