forked from boostorg/fusion
Fixed MSVC errors (from Nathan Ridge)
[SVN r80326]
This commit is contained in:
@ -61,15 +61,20 @@
|
|||||||
BOOST_PP_COMMA_IF(N) \
|
BOOST_PP_COMMA_IF(N) \
|
||||||
BOOST_FUSION_MAKE_INIT_LIST_ENTRY_I(BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE))
|
BOOST_FUSION_MAKE_INIT_LIST_ENTRY_I(BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE))
|
||||||
|
|
||||||
|
#define BOOST_FUSION_ITERATOR_NAME(NAME) \
|
||||||
|
BOOST_PP_CAT(boost_fusion_detail_, BOOST_PP_CAT(NAME, _iterator))
|
||||||
|
|
||||||
// Note: all template parameter names need to be uglified, otherwise they might
|
// Note: all template parameter names need to be uglified, otherwise they might
|
||||||
// shadow a template parameter of the struct when used with
|
// shadow a template parameter of the struct when used with
|
||||||
// BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE
|
// BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE
|
||||||
|
|
||||||
#define BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS(Z, N, NAME) \
|
#define BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS(Z, N, NAME) \
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct value_of<NAME##_iterator<boost_fusion_uglified_Sq, N> > \
|
struct value_of< \
|
||||||
|
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, N> \
|
||||||
|
> \
|
||||||
: boost::mpl::identity< \
|
: boost::mpl::identity< \
|
||||||
typename boost_fusion_uglified_Sq::t##N##_type \
|
typename boost_fusion_detail_Sq::t##N##_type \
|
||||||
> \
|
> \
|
||||||
{ \
|
{ \
|
||||||
};
|
};
|
||||||
@ -77,10 +82,10 @@
|
|||||||
#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||||
SPEC_TYPE, CALL_ARG_TYPE, TYPE_QUAL, ATTRIBUTE, N) \
|
SPEC_TYPE, CALL_ARG_TYPE, TYPE_QUAL, ATTRIBUTE, N) \
|
||||||
\
|
\
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct deref<SPEC_TYPE, N> > \
|
struct deref<SPEC_TYPE, N> > \
|
||||||
{ \
|
{ \
|
||||||
typedef typename boost_fusion_uglified_Sq::t##N##_type TYPE_QUAL& type; \
|
typedef typename boost_fusion_detail_Sq::t##N##_type TYPE_QUAL& type; \
|
||||||
static type call(CALL_ARG_TYPE, N> const& iter) \
|
static type call(CALL_ARG_TYPE, N> const& iter) \
|
||||||
{ \
|
{ \
|
||||||
return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
||||||
@ -89,48 +94,48 @@
|
|||||||
|
|
||||||
#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS(R, NAME, N, ATTRIBUTE) \
|
#define BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS(R, NAME, N, ATTRIBUTE) \
|
||||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||||
BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||||
BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||||
, \
|
, \
|
||||||
ATTRIBUTE, \
|
ATTRIBUTE, \
|
||||||
N) \
|
N) \
|
||||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||||
BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||||
BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||||
const, \
|
const, \
|
||||||
ATTRIBUTE, \
|
ATTRIBUTE, \
|
||||||
N) \
|
N) \
|
||||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||||
const BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
const BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||||
BOOST_PP_CAT(NAME, _iterator)<boost_fusion_uglified_Sq, \
|
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, \
|
||||||
, \
|
, \
|
||||||
ATTRIBUTE, \
|
ATTRIBUTE, \
|
||||||
N) \
|
N) \
|
||||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPEC( \
|
||||||
const BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
const BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||||
BOOST_PP_CAT(NAME, _iterator)<const boost_fusion_uglified_Sq, \
|
BOOST_FUSION_ITERATOR_NAME(NAME)<const boost_fusion_detail_Sq, \
|
||||||
const, \
|
const, \
|
||||||
ATTRIBUTE, \
|
ATTRIBUTE, \
|
||||||
N) \
|
N) \
|
||||||
|
|
||||||
#define BOOST_FUSION_MAKE_VALUE_AT_SPECS(Z, N, DATA) \
|
#define BOOST_FUSION_MAKE_VALUE_AT_SPECS(Z, N, DATA) \
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct value_at<boost_fusion_uglified_Sq, boost::mpl::int_<N> > \
|
struct value_at<boost_fusion_detail_Sq, boost::mpl::int_<N> > \
|
||||||
{ \
|
{ \
|
||||||
typedef typename boost_fusion_uglified_Sq::t##N##_type type; \
|
typedef typename boost_fusion_detail_Sq::t##N##_type type; \
|
||||||
};
|
};
|
||||||
|
|
||||||
#define BOOST_FUSION_MAKE_AT_SPECS(R, DATA, N, ATTRIBUTE) \
|
#define BOOST_FUSION_MAKE_AT_SPECS(R, DATA, N, ATTRIBUTE) \
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct at<boost_fusion_uglified_Sq, boost::mpl::int_<N> > \
|
struct at<boost_fusion_detail_Sq, boost::mpl::int_<N> > \
|
||||||
{ \
|
{ \
|
||||||
typedef typename boost::mpl::if_< \
|
typedef typename boost::mpl::if_< \
|
||||||
boost::is_const<boost_fusion_uglified_Sq>, \
|
boost::is_const<boost_fusion_detail_Sq>, \
|
||||||
typename boost_fusion_uglified_Sq::t##N##_type const&, \
|
typename boost_fusion_detail_Sq::t##N##_type const&, \
|
||||||
typename boost_fusion_uglified_Sq::t##N##_type& \
|
typename boost_fusion_detail_Sq::t##N##_type& \
|
||||||
>::type type; \
|
>::type type; \
|
||||||
\
|
\
|
||||||
static type call(boost_fusion_uglified_Sq& sq) \
|
static type call(boost_fusion_detail_Sq& sq) \
|
||||||
{ \
|
{ \
|
||||||
return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
||||||
} \
|
} \
|
||||||
@ -142,7 +147,11 @@
|
|||||||
#define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \
|
#define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \
|
||||||
BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE);
|
BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE);
|
||||||
|
|
||||||
|
// Note: We can't nest the iterator inside the struct because we run into
|
||||||
|
// a MSVC10 bug involving partial specializations of nested templates.
|
||||||
|
|
||||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_IMPL(NAME, ATTRIBUTES) \
|
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_IMPL(NAME, ATTRIBUTES) \
|
||||||
|
BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \
|
||||||
struct NAME : boost::fusion::sequence_facade< \
|
struct NAME : boost::fusion::sequence_facade< \
|
||||||
NAME, \
|
NAME, \
|
||||||
boost::fusion::random_access_traversal_tag \
|
boost::fusion::random_access_traversal_tag \
|
||||||
@ -154,6 +163,8 @@
|
|||||||
#define BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE_IMPL( \
|
#define BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE_IMPL( \
|
||||||
TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES) \
|
TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES) \
|
||||||
\
|
\
|
||||||
|
BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \
|
||||||
|
\
|
||||||
template < \
|
template < \
|
||||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \
|
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS_IMPL( \
|
||||||
(0)TEMPLATE_PARAMS_SEQ) \
|
(0)TEMPLATE_PARAMS_SEQ) \
|
||||||
@ -179,6 +190,113 @@
|
|||||||
ATTRIBUTES_SEQ, \
|
ATTRIBUTES_SEQ, \
|
||||||
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ))
|
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ))
|
||||||
|
|
||||||
|
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR(NAME, ATTRIBUTES) \
|
||||||
|
BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL( \
|
||||||
|
NAME, \
|
||||||
|
BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 ATTRIBUTES,_END))
|
||||||
|
|
||||||
|
#define BOOST_FUSION_DEFINE_STRUCT_ITERATOR_IMPL(NAME, ATTRIBUTES_SEQ) \
|
||||||
|
BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
|
||||||
|
NAME, \
|
||||||
|
ATTRIBUTES_SEQ, \
|
||||||
|
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ))
|
||||||
|
|
||||||
|
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
|
||||||
|
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
|
||||||
|
\
|
||||||
|
template <typename boost_fusion_detail_Seq, int N> \
|
||||||
|
struct BOOST_FUSION_ITERATOR_NAME(NAME) \
|
||||||
|
: boost::fusion::iterator_facade< \
|
||||||
|
BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Seq, N>, \
|
||||||
|
boost::fusion::random_access_traversal_tag \
|
||||||
|
> \
|
||||||
|
{ \
|
||||||
|
typedef boost::mpl::int_<N> index; \
|
||||||
|
typedef boost_fusion_detail_Seq sequence_type; \
|
||||||
|
\
|
||||||
|
BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \
|
||||||
|
: seq_(seq) {} \
|
||||||
|
\
|
||||||
|
boost_fusion_detail_Seq& seq_; \
|
||||||
|
\
|
||||||
|
template <typename boost_fusion_detail_T> struct value_of; \
|
||||||
|
BOOST_PP_REPEAT( \
|
||||||
|
ATTRIBUTES_SEQ_SIZE, \
|
||||||
|
BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \
|
||||||
|
NAME) \
|
||||||
|
\
|
||||||
|
template <typename boost_fusion_detail_T> struct deref; \
|
||||||
|
BOOST_PP_SEQ_FOR_EACH_I( \
|
||||||
|
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \
|
||||||
|
NAME, \
|
||||||
|
ATTRIBUTES_SEQ) \
|
||||||
|
\
|
||||||
|
template <typename boost_fusion_detail_It> \
|
||||||
|
struct next \
|
||||||
|
{ \
|
||||||
|
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||||
|
typename boost_fusion_detail_It::sequence_type, \
|
||||||
|
boost_fusion_detail_It::index::value + 1 \
|
||||||
|
> type; \
|
||||||
|
\
|
||||||
|
static type call(boost_fusion_detail_It const& it) \
|
||||||
|
{ \
|
||||||
|
return type(it.seq_); \
|
||||||
|
} \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
template <typename boost_fusion_detail_It> \
|
||||||
|
struct prior \
|
||||||
|
{ \
|
||||||
|
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||||
|
typename boost_fusion_detail_It::sequence_type, \
|
||||||
|
boost_fusion_detail_It::index::value - 1 \
|
||||||
|
> type; \
|
||||||
|
\
|
||||||
|
static type call(boost_fusion_detail_It const& it) \
|
||||||
|
{ \
|
||||||
|
return type(it.seq_); \
|
||||||
|
} \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
template < \
|
||||||
|
typename boost_fusion_detail_It1, \
|
||||||
|
typename boost_fusion_detail_It2 \
|
||||||
|
> \
|
||||||
|
struct distance \
|
||||||
|
{ \
|
||||||
|
typedef typename boost::mpl::minus< \
|
||||||
|
typename boost_fusion_detail_It2::index, \
|
||||||
|
typename boost_fusion_detail_It1::index \
|
||||||
|
>::type type; \
|
||||||
|
\
|
||||||
|
static type call(boost_fusion_detail_It1 const& it1, \
|
||||||
|
boost_fusion_detail_It2 const& it2) \
|
||||||
|
{ \
|
||||||
|
return type(); \
|
||||||
|
} \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
template < \
|
||||||
|
typename boost_fusion_detail_It, \
|
||||||
|
typename boost_fusion_detail_M \
|
||||||
|
> \
|
||||||
|
struct advance \
|
||||||
|
{ \
|
||||||
|
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||||
|
typename boost_fusion_detail_It::sequence_type, \
|
||||||
|
boost_fusion_detail_It::index::value \
|
||||||
|
+ boost_fusion_detail_M::value \
|
||||||
|
> type; \
|
||||||
|
\
|
||||||
|
static type call(boost_fusion_detail_It const& it) \
|
||||||
|
{ \
|
||||||
|
return type(it.seq_); \
|
||||||
|
} \
|
||||||
|
}; \
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
|
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
|
||||||
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
|
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
|
||||||
\
|
\
|
||||||
@ -197,152 +315,62 @@
|
|||||||
BOOST_FUSION_IGNORE_2) \
|
BOOST_FUSION_IGNORE_2) \
|
||||||
(NAME, ATTRIBUTES_SEQ) \
|
(NAME, ATTRIBUTES_SEQ) \
|
||||||
\
|
\
|
||||||
template <typename boost_fusion_uglified_Seq> \
|
template <typename boost_fusion_detail_Seq> \
|
||||||
NAME(const boost_fusion_uglified_Seq& rhs) \
|
NAME(const boost_fusion_detail_Seq& rhs) \
|
||||||
{ \
|
{ \
|
||||||
boost::fusion::copy(rhs, *this); \
|
boost::fusion::copy(rhs, *this); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
template <typename boost_fusion_uglified_Seq> \
|
template <typename boost_fusion_detail_Seq> \
|
||||||
NAME& operator=(const boost_fusion_uglified_Seq& rhs) \
|
NAME& operator=(const boost_fusion_detail_Seq& rhs) \
|
||||||
{ \
|
{ \
|
||||||
boost::fusion::copy(rhs, *this); \
|
boost::fusion::copy(rhs, *this); \
|
||||||
return *this; \
|
return *this; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
template <typename boost_fusion_uglified_Seq, int N> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct NAME##_iterator \
|
|
||||||
: boost::fusion::iterator_facade< \
|
|
||||||
NAME##_iterator<boost_fusion_uglified_Seq, N>, \
|
|
||||||
boost::fusion::random_access_traversal_tag \
|
|
||||||
> \
|
|
||||||
{ \
|
|
||||||
typedef boost::mpl::int_<N> index; \
|
|
||||||
typedef boost_fusion_uglified_Seq sequence_type; \
|
|
||||||
\
|
|
||||||
NAME##_iterator(boost_fusion_uglified_Seq& seq) : seq_(seq) {} \
|
|
||||||
\
|
|
||||||
boost_fusion_uglified_Seq& seq_; \
|
|
||||||
\
|
|
||||||
template <typename boost_fusion_uglified_T> struct value_of; \
|
|
||||||
BOOST_PP_REPEAT( \
|
|
||||||
ATTRIBUTES_SEQ_SIZE, \
|
|
||||||
BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \
|
|
||||||
NAME) \
|
|
||||||
\
|
|
||||||
template <typename boost_fusion_uglified_T> struct deref; \
|
|
||||||
BOOST_PP_SEQ_FOR_EACH_I( \
|
|
||||||
BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \
|
|
||||||
NAME, \
|
|
||||||
ATTRIBUTES_SEQ) \
|
|
||||||
\
|
|
||||||
template <typename boost_fusion_uglified_It> \
|
|
||||||
struct next \
|
|
||||||
{ \
|
|
||||||
typedef NAME##_iterator< \
|
|
||||||
typename boost_fusion_uglified_It::sequence_type, \
|
|
||||||
boost_fusion_uglified_It::index::value + 1 \
|
|
||||||
> type; \
|
|
||||||
\
|
|
||||||
static type call(boost_fusion_uglified_It const& it) \
|
|
||||||
{ \
|
|
||||||
return type(it.seq_); \
|
|
||||||
} \
|
|
||||||
}; \
|
|
||||||
\
|
|
||||||
template <typename boost_fusion_uglified_It> \
|
|
||||||
struct prior \
|
|
||||||
{ \
|
|
||||||
typedef NAME##_iterator< \
|
|
||||||
typename boost_fusion_uglified_It::sequence_type, \
|
|
||||||
boost_fusion_uglified_It::index::value - 1 \
|
|
||||||
> type; \
|
|
||||||
\
|
|
||||||
static type call(boost_fusion_uglified_It const& it) \
|
|
||||||
{ \
|
|
||||||
return type(it.seq_); \
|
|
||||||
} \
|
|
||||||
}; \
|
|
||||||
\
|
|
||||||
template < \
|
|
||||||
typename boost_fusion_uglified_It1, \
|
|
||||||
typename boost_fusion_uglified_It2 \
|
|
||||||
> \
|
|
||||||
struct distance \
|
|
||||||
{ \
|
|
||||||
typedef typename boost::mpl::minus< \
|
|
||||||
typename boost_fusion_uglified_It2::index, \
|
|
||||||
typename boost_fusion_uglified_It1::index \
|
|
||||||
>::type type; \
|
|
||||||
\
|
|
||||||
static type call(boost_fusion_uglified_It1 const& it1, \
|
|
||||||
boost_fusion_uglified_It2 const& it2) \
|
|
||||||
{ \
|
|
||||||
return type(); \
|
|
||||||
} \
|
|
||||||
}; \
|
|
||||||
\
|
|
||||||
template < \
|
|
||||||
typename boost_fusion_uglified_It, \
|
|
||||||
typename boost_fusion_uglified_M \
|
|
||||||
> \
|
|
||||||
struct advance \
|
|
||||||
{ \
|
|
||||||
typedef NAME##_iterator< \
|
|
||||||
typename boost_fusion_uglified_It::sequence_type, \
|
|
||||||
boost_fusion_uglified_It::index::value \
|
|
||||||
+ boost_fusion_uglified_M::value \
|
|
||||||
> type; \
|
|
||||||
\
|
|
||||||
static type call(boost_fusion_uglified_It const& it) \
|
|
||||||
{ \
|
|
||||||
return type(it.seq_); \
|
|
||||||
} \
|
|
||||||
}; \
|
|
||||||
}; \
|
|
||||||
\
|
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
|
||||||
struct begin \
|
struct begin \
|
||||||
{ \
|
{ \
|
||||||
typedef NAME##_iterator<boost_fusion_uglified_Sq, 0> type; \
|
typedef BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, 0> \
|
||||||
|
type; \
|
||||||
\
|
\
|
||||||
static type call(boost_fusion_uglified_Sq& sq) \
|
static type call(boost_fusion_detail_Sq& sq) \
|
||||||
{ \
|
{ \
|
||||||
return type(sq); \
|
return type(sq); \
|
||||||
} \
|
} \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct end \
|
struct end \
|
||||||
{ \
|
{ \
|
||||||
typedef NAME##_iterator< \
|
typedef BOOST_FUSION_ITERATOR_NAME(NAME)< \
|
||||||
boost_fusion_uglified_Sq, \
|
boost_fusion_detail_Sq, \
|
||||||
ATTRIBUTES_SEQ_SIZE \
|
ATTRIBUTES_SEQ_SIZE \
|
||||||
> type; \
|
> type; \
|
||||||
\
|
\
|
||||||
static type call(boost_fusion_uglified_Sq& sq) \
|
static type call(boost_fusion_detail_Sq& sq) \
|
||||||
{ \
|
{ \
|
||||||
return type(sq); \
|
return type(sq); \
|
||||||
} \
|
} \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct size : boost::mpl::int_<ATTRIBUTES_SEQ_SIZE> \
|
struct size : boost::mpl::int_<ATTRIBUTES_SEQ_SIZE> \
|
||||||
{ \
|
{ \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
template <typename boost_fusion_uglified_Sq> \
|
template <typename boost_fusion_detail_Sq> \
|
||||||
struct empty : boost::mpl::bool_<ATTRIBUTES_SEQ_SIZE == 0> \
|
struct empty : boost::mpl::bool_<ATTRIBUTES_SEQ_SIZE == 0> \
|
||||||
{ \
|
{ \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
template < \
|
template < \
|
||||||
typename boost_fusion_uglified_Sq, \
|
typename boost_fusion_detail_Sq, \
|
||||||
typename boost_fusion_uglified_N \
|
typename boost_fusion_detail_N \
|
||||||
> \
|
> \
|
||||||
struct value_at : value_at< \
|
struct value_at : value_at< \
|
||||||
boost_fusion_uglified_Sq, \
|
boost_fusion_detail_Sq, \
|
||||||
boost::mpl::int_<boost_fusion_uglified_N::value> \
|
boost::mpl::int_<boost_fusion_detail_N::value> \
|
||||||
> \
|
> \
|
||||||
{ \
|
{ \
|
||||||
}; \
|
}; \
|
||||||
@ -353,12 +381,12 @@
|
|||||||
~) \
|
~) \
|
||||||
\
|
\
|
||||||
template < \
|
template < \
|
||||||
typename boost_fusion_uglified_Sq, \
|
typename boost_fusion_detail_Sq, \
|
||||||
typename boost_fusion_uglified_N \
|
typename boost_fusion_detail_N \
|
||||||
> \
|
> \
|
||||||
struct at : at< \
|
struct at : at< \
|
||||||
boost_fusion_uglified_Sq, \
|
boost_fusion_detail_Sq, \
|
||||||
boost::mpl::int_<boost_fusion_uglified_N::value> \
|
boost::mpl::int_<boost_fusion_detail_N::value> \
|
||||||
> \
|
> \
|
||||||
{ \
|
{ \
|
||||||
}; \
|
}; \
|
||||||
|
Reference in New Issue
Block a user