Files
boost_fusion/include/boost/fusion/adapted/class/extension.hpp

62 lines
1.6 KiB
C++
Raw Normal View History

2009-10-04 16:59:37 +00:00
/*=============================================================================
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 <boost/type_traits/add_const.hpp>
namespace boost { namespace fusion
2009-10-04 16:59:37 +00:00
{
struct fusion_sequence_tag;
2009-10-04 16:59:37 +00:00
namespace extension
{
template <typename Class, int N>
struct class_member;
2009-10-04 16:59:37 +00:00
template <typename Class>
struct class_size;
2009-10-04 16:59:37 +00:00
template <typename Class, int N>
struct class_member<Class const, N> : class_member<Class, N> {};
2009-10-04 16:59:37 +00:00
template <typename Class>
struct class_size<Class const>
: class_size<Class>
{};
2009-10-04 16:59:37 +00:00
struct no_such_member;
2009-10-04 16:59:37 +00:00
template<typename Class, typename Key>
struct class_assoc_member
2009-10-04 16:59:37 +00:00
{
typedef no_such_member type;
};
2009-10-04 16:59:37 +00:00
template<typename Class, typename Key>
struct class_assoc_member<Class const, Key>
{
typedef typename
add_const<typename class_assoc_member<Class, Key>::type>::type
type;
static type&
call(Class const& class_)
{
return class_assoc_member<Class, Key>::call(
const_cast<Class&>(class_));
}
};
}
}}
2009-10-04 16:59:37 +00:00
#endif