mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-16 13:52:24 +02:00
62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
/*=============================================================================
|
|
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
|
|
{
|
|
struct fusion_sequence_tag;
|
|
|
|
namespace extension
|
|
{
|
|
template <typename Class, int N>
|
|
struct class_member;
|
|
|
|
template <typename Class>
|
|
struct class_size;
|
|
|
|
template <typename Class, int N>
|
|
struct class_member<Class const, N> : class_member<Class, N> {};
|
|
|
|
template <typename Class>
|
|
struct class_size<Class const>
|
|
: class_size<Class>
|
|
{};
|
|
|
|
struct no_such_member;
|
|
|
|
template<typename Class, typename Key>
|
|
struct class_assoc_member
|
|
{
|
|
typedef no_such_member type;
|
|
};
|
|
|
|
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_));
|
|
}
|
|
};
|
|
|
|
}
|
|
}}
|
|
|
|
#endif
|
|
|
|
|