bug fix for end_impl.

[SVN r42164]
This commit is contained in:
Joel de Guzman
2007-12-19 10:33:14 +00:00
parent e9fd448376
commit 61bf0151da
2 changed files with 10 additions and 4 deletions

View File

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

View File

@ -9,6 +9,7 @@
#define BOOST_FUSION_END_IMPL_24122005_1755 #define BOOST_FUSION_END_IMPL_24122005_1755
#include <boost/fusion/adapted/struct/struct_iterator.hpp> #include <boost/fusion/adapted/struct/struct_iterator.hpp>
#include <boost/fusion/adapted/struct/detail/size_impl.hpp>
namespace boost { namespace fusion namespace boost { namespace fusion
{ {
@ -25,7 +26,12 @@ namespace boost { namespace fusion
template <typename Sequence> template <typename Sequence>
struct apply struct apply
{ {
typedef struct_iterator<Sequence, 2> type; typedef
struct_iterator<
Sequence
, size_impl<struct_tag>::template apply<Sequence>::value
>
type;
static type static type
call(Sequence& v) call(Sequence& v)