merge from trunk

[SVN r42225]
This commit is contained in:
Joel de Guzman
2007-12-21 02:45:20 +00:00
parent d57e8cfe9e
commit 7bd2fd716d
19 changed files with 45 additions and 438 deletions

View File

@ -53,7 +53,7 @@ namespace boost { namespace fusion { namespace extension {
// SEQ_FOR_EACH_I to generate the "linear" substructures.
// Thanks to Paul Mensonides for the PP macro help
#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_I(name, seq) \
#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_I(name, seq) \
namespace boost { namespace fusion { namespace traits \
{ \
template <> \
@ -66,11 +66,11 @@ namespace boost { namespace fusion { namespace extension {
{ \
template <> \
struct struct_size<name> : mpl::int_<BOOST_PP_SEQ_SIZE(seq)> {}; \
BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_ASSOC_STRUCT_C, name, seq) \
BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_ASSOC_STRUCT_C, name, seq) \
}}} \
/***/
#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C(r, name, i, xy) \
#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C(r, name, i, xy) \
template <> \
struct struct_member<name, i> \
{ \

View File

@ -19,13 +19,21 @@ namespace boost { namespace fusion
template <typename Tag>
struct end_impl;
template <typename Struct>
struct struct_size;
template <>
struct end_impl<struct_tag>
{
template <typename Sequence>
struct apply
{
typedef struct_iterator<Sequence, 2> type;
typedef
struct_iterator<
Sequence
, struct_size<Sequence>::value
>
type;
static type
call(Sequence& v)

View File

@ -50,7 +50,7 @@ namespace boost { namespace fusion { namespace extension
struct struct_assoc_member<Struct const, Key>
{
typedef typename
add_const<typename struct_assoc_member<Struct, Key>::type>::type
add_const<typename struct_assoc_member<Struct, Key>::type>::type
type;
static type&