- patch from nathan ridge

- fixed deque regression 

[SVN r80458]
This commit is contained in:
Joel de Guzman
2012-09-09 00:27:37 +00:00
parent a856857cb7
commit b57cd4ede9
3 changed files with 17 additions and 9 deletions

View File

@ -203,7 +203,7 @@
BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
NAME, \
ATTRIBUTES_SEQ, \
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ))
BOOST_PP_DEC(BOOST_PP_SEQ_SIZE((0)ATTRIBUTES_SEQ)))
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
@ -304,17 +304,22 @@
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
\
/* Note: second BOOST_PP_IF is necessary to avoid MSVC warning when */ \
/* calling BOOST_FUSION_IGNORE_1 with no arguments. */ \
NAME() \
BOOST_PP_IF( \
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \
ATTRIBUTES_SEQ_SIZE, \
BOOST_FUSION_MAKE_DEFAULT_INIT_LIST, \
BOOST_FUSION_IGNORE_1) \
(ATTRIBUTES_SEQ) \
(BOOST_PP_IF( \
ATTRIBUTES_SEQ_SIZE, \
ATTRIBUTES_SEQ, \
0)) \
{ \
} \
\
BOOST_PP_IF( \
BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ), \
ATTRIBUTES_SEQ_SIZE, \
BOOST_FUSION_MAKE_COPY_CONSTRUCTOR, \
BOOST_FUSION_IGNORE_2) \
(NAME, ATTRIBUTES_SEQ) \

View File

@ -93,7 +93,9 @@ namespace boost { namespace fusion { namespace detail
return value_;
}
keyed_element(Value const& value, Rest const& rest)
keyed_element(
typename detail::call_param<Value>::type value
, Rest const& rest)
: Rest(rest), value_(value)
{}

View File

@ -38,12 +38,13 @@ namespace boost { namespace fusion { namespace detail
);
}
static type forward_(Head&& head, Tail&&... tail)
template <typename Head_, typename ...Tail_>
static type forward_(Head_&& head, Tail_&&... tail)
{
return type(
std::forward<Head>(head)
, deque_keyed_values_impl<next_index, Tail...>::
forward_(std::forward<Tail>(tail)...)
std::forward<Head_>(head)
, deque_keyed_values_impl<next_index, Tail_...>::
forward_(std::forward<Tail_>(tail)...)
);
}
};