Merge pull request #31 from Flast/develop

Fix three test failures on older and c++03 compiler.
This commit is contained in:
Joel de Guzman
2014-11-02 20:49:23 +08:00
37 changed files with 159 additions and 19 deletions
+27
View File
@@ -1470,6 +1470,10 @@ rules for __element_conversion__.
Returns the result type of __make_map__.
The implementation depends on the support of variadic templates.
When variadic templates are not supported, make_map is a metafunction of the form:
[heading Synopsis]
template <
@@ -1487,6 +1491,18 @@ default. Example:
#define FUSION_MAX_MAP_SIZE 20
When variadic templates are supported, make_map is a metafunction class of the form:
[heading Synopsis]
template <
typename K0, typename K1,... typename KN>
struct make_map
{
struct apply<
typename T0, typename T1,... typename TN>
};
[heading Parameters]
[table
@@ -1497,9 +1513,16 @@ default. Example:
[heading Expression Semantics]
#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
resulf_of::make_map<K0, K1,... KN, T0, T1,... TN>::type;
#else
resulf_of::make_map<K0, K1,... KN>::apply<T0, T1,... TN>::type;
#endif
[*Return type]: __result_of_make_map__`<K0, K0,... KN, T0, T1,... TN>::type`
when variadic templates are not supported, or
__result_of_make_map__`<K0, K0,... KN>::apply<T0, T1,... TN>::type`
when variadic templates are supported.
[*Semantics]: A __map__ with __fusion_pair__ elements where the
`second_type` is converted following the rules for __element_conversion__.
@@ -1513,7 +1536,11 @@ default. Example:
[heading Example]
#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP)
result_of::make_map<int, double, char, double>::type
#else
result_of::make_map<int, double>::apply<char, double>::type
#endif
[heading See also]
@@ -392,9 +392,9 @@
typename boost_fusion_detail_It1::index \
>::type type; \
\
BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_It1 const& it1, \
boost_fusion_detail_It2 const& it2) \
BOOST_FUSION_GPU_ENABLED \
static type call(boost_fusion_detail_It1 const& /* it1 */, \
boost_fusion_detail_It2 const& /* it2 */) \
{ \
return type(); \
} \
@@ -13,7 +13,7 @@ namespace boost { namespace fusion
{
template<typename State, typename It, typename F>
struct iter_fold_lvalue_state
: boost::result_of<
: fusion::detail::result_of_with_decltype<
F(
typename add_reference<typename add_const<State>::type>::type,
It&)
@@ -272,7 +272,7 @@ namespace boost { namespace fusion
{
typedef typename
result_of_unrolled_iter_fold<
typename boost::result_of<
typename fusion::detail::result_of_with_decltype<
F(
StateRef,
It0 const&
@@ -13,7 +13,7 @@ namespace boost { namespace fusion
{
template<typename State, typename It, typename F>
struct reverse_fold_lvalue_state
: boost::result_of<
: fusion::detail::result_of_with_decltype<
F(
typename add_reference<typename add_const<State>::type>::type,
typename fusion::result_of::deref<It>::type)
@@ -272,7 +272,7 @@ namespace boost { namespace fusion
{
typedef typename
result_of_unrolled_reverse_fold<
typename boost::result_of<
typename fusion::detail::result_of_with_decltype<
F(
StateRef,
typename fusion::result_of::deref< It0 const>::type
@@ -13,7 +13,7 @@ namespace boost { namespace fusion
{
template<typename State, typename It, typename F>
struct reverse_iter_fold_lvalue_state
: boost::result_of<
: fusion::detail::result_of_with_decltype<
F(
typename add_reference<typename add_const<State>::type>::type,
It&)
@@ -272,7 +272,7 @@ namespace boost { namespace fusion
{
typedef typename
result_of_unrolled_reverse_iter_fold<
typename boost::result_of<
typename fusion::detail::result_of_with_decltype<
F(
StateRef,
It0 const&
@@ -23,6 +23,8 @@
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <int size>
struct as_deque;
@@ -43,6 +45,8 @@ namespace boost { namespace fusion { namespace detail
return deque<>();
}
};
BOOST_FUSION_BARRIER_END
}}}
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
@@ -67,6 +71,8 @@ namespace boost { namespace fusion { namespace detail
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
BOOST_PP_CAT(I, BOOST_PP_INC(n));
@@ -87,6 +93,7 @@ namespace boost { namespace fusion { namespace detail
#undef BOOST_FUSION_NEXT_CALL_ITERATOR
#undef BOOST_FUSION_VALUE_OF_ITERATOR
BOOST_FUSION_BARRIER_END
}}}
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_deque<1>
{
@@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_deque<1>
{
@@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_deque<1>
{
@@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_deque<1>
{
@@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_deque<1>
{
@@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -22,6 +22,8 @@
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <int size, bool is_assoc>
struct as_map;
@@ -42,6 +44,8 @@ namespace boost { namespace fusion { namespace detail
return map<>();
}
};
BOOST_FUSION_BARRIER_END
}}}
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
@@ -66,6 +70,8 @@ namespace boost { namespace fusion { namespace detail
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
BOOST_PP_CAT(I, BOOST_PP_INC(n));
@@ -90,6 +96,7 @@ namespace boost { namespace fusion { namespace detail
#undef BOOST_FUSION_PAIR_FROM_ITERATOR
#undef BOOST_FUSION_DREF_CALL_ITERATOR
BOOST_FUSION_BARRIER_END
}}}
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <bool is_assoc>
struct as_map<1, is_assoc>
{
@@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail
return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9));
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <bool is_assoc>
struct as_map<1, is_assoc>
{
@@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail
return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19));
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <bool is_assoc>
struct as_map<1, is_assoc>
{
@@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail
return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29));
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <bool is_assoc>
struct as_map<1, is_assoc>
{
@@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail
return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39));
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <bool is_assoc>
struct as_map<1, is_assoc>
{
@@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail
return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44) , gen::D45::call(i45) , gen::D46::call(i46) , gen::D47::call(i47) , gen::D48::call(i48) , gen::D49::call(i49));
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -38,12 +38,12 @@ namespace boost { namespace fusion { namespace detail
template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
map_impl(Iterator const& iter, map_impl_from_iterator)
map_impl(Iterator const&, map_impl_from_iterator)
{}
template <typename Iterator>
BOOST_FUSION_GPU_ENABLED
void assign(Iterator const& iter, map_impl_from_iterator)
void assign(Iterator const&, map_impl_from_iterator)
{}
BOOST_FUSION_GPU_ENABLED
@@ -22,6 +22,8 @@
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <int size>
struct as_set;
@@ -42,6 +44,8 @@ namespace boost { namespace fusion { namespace detail
return set<>();
}
};
BOOST_FUSION_BARRIER_END
}}}
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
@@ -66,6 +70,8 @@ namespace boost { namespace fusion { namespace detail
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
BOOST_PP_CAT(I, BOOST_PP_INC(n));
@@ -86,6 +92,7 @@ namespace boost { namespace fusion { namespace detail
#undef BOOST_FUSION_NEXT_CALL_ITERATOR
#undef BOOST_FUSION_VALUE_OF_ITERATOR
BOOST_FUSION_BARRIER_END
}}}
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_set<1>
{
@@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_set<1>
{
@@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_set<1>
{
@@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_set<1>
{
@@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_set<1>
{
@@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -22,6 +22,8 @@
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <int size>
struct as_vector;
@@ -42,6 +44,8 @@ namespace boost { namespace fusion { namespace detail
return vector0<>();
}
};
BOOST_FUSION_BARRIER_END
}}}
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
@@ -66,6 +70,7 @@ namespace boost { namespace fusion { namespace detail
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
@@ -87,6 +92,7 @@ namespace boost { namespace fusion { namespace detail
#undef BOOST_FUSION_NEXT_CALL_ITERATOR
#undef BOOST_FUSION_VALUE_OF_ITERATOR
BOOST_FUSION_BARRIER_END
}}}
#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_vector<1>
{
@@ -218,4 +219,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_vector<1>
{
@@ -428,4 +429,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_vector<1>
{
@@ -638,4 +639,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_vector<1>
{
@@ -848,4 +849,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39);
}
};
BOOST_FUSION_BARRIER_END
}}}
@@ -8,6 +8,7 @@
==============================================================================*/
namespace boost { namespace fusion { namespace detail
{
BOOST_FUSION_BARRIER_BEGIN
template <>
struct as_vector<1>
{
@@ -1058,4 +1059,5 @@ namespace boost { namespace fusion { namespace detail
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49);
}
};
BOOST_FUSION_BARRIER_END
}}}
+26
View File
@@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2014 Eric Niebler
Copyright (c) 2014 Kohei Takahashi
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)
@@ -13,4 +14,29 @@
#define BOOST_FUSION_GPU_ENABLED BOOST_GPU_ENABLED
#endif
// Enclose with inline namespace because unqualified lookup of GCC < 4.5 is broken.
//
// namespace detail {
// struct foo;
// struct X { };
// }
//
// template <typename T> void foo(T) { }
//
// int main()
// {
// foo(detail::X());
// // prog.cc: In function 'int main()':
// // prog.cc:2: error: 'struct detail::foo' is not a function,
// // prog.cc:6: error: conflict with 'template<class T> void foo(T)'
// // prog.cc:10: error: in call to 'foo'
// }
namespace boost { namespace fusion { namespace detail
{
namespace barrier { }
using namespace barrier;
}}}
#define BOOST_FUSION_BARRIER_BEGIN namespace barrier {
#define BOOST_FUSION_BARRIER_END }
#endif
@@ -7,8 +7,14 @@
#if !defined(FUSION_RESULT_OF_10272014_0654)
#define FUSION_RESULT_OF_10272014_0654
#include <boost/config.hpp>
#include <boost/utility/result_of.hpp>
#if !(defined(BOOST_NO_CXX11_DECLTYPE) || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES))
#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
#define BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF
#endif
#if !defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF)
#include <boost/mpl/if.hpp>
#include <boost/mpl/or.hpp>
#include <boost/mpl/has_xxx.hpp>
@@ -21,12 +27,12 @@ namespace boost { namespace fusion { namespace detail
// low level code. So far this is used only in the fold algorithm. This will
// be removed once we overhaul fold.
#if defined(BOOST_NO_CXX11_DECLTYPE) || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
#if defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF)
template <typename Sig>
struct result_of_with_decltype : boost::tr1_result_of<Sig> {};
#else
#else // defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF)
BOOST_MPL_HAS_XXX_TRAIT_DEF(result_type)
BOOST_MPL_HAS_XXX_TEMPLATE_DEF(result)
@@ -40,7 +46,7 @@ namespace boost { namespace fusion { namespace detail
boost::tr1_result_of<F(Args...)>,
boost::detail::cpp0x_result_of<F(Args...)> >::type {};
#endif
#endif // defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF)
}}}
+2
View File
@@ -21,6 +21,8 @@
-NBOOST_FUSION_HAS_VARIADIC_MAP
-NBOOST_FUSION_VECTOR_COPY_INIT
-NBOOST_FUSION_VECTOR_CTOR_HELPER
-NBOOST_FUSION_BARRIER_BEGIN
-NBOOST_FUSION_BARRIER_END
-S..\include
-S..\..\..
-S"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE"
+2 -2
View File
@@ -132,7 +132,7 @@ struct functor
struct visitor
{
using result_type = int;
typedef int result_type;
int operator()(int sum, long&)
{
@@ -238,7 +238,7 @@ main()
}
{
#if !defined(BOOST_NO_CXX11_DECLTYPE)
#if !defined(BOOST_FUSION_NO_DECLTYPE_BASED_RESULT_OF)
{
boost::fusion::vector<int, double, long> container{1, 2, 3};
functor f;
+2 -2
View File
@@ -1,8 +1,8 @@
/*=============================================================================
Copyright (c) 2010, 2012 Christopher Schmidt, Nathan Ridge
Distributed under the Boost Software Liceclse, Version 1.0. (See accompanying
file LICEclsE_1_0.txt or copy at http://www.boost.org/LICEclsE_1_0.txt)
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)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
+6
View File
@@ -1,3 +1,9 @@
/*=============================================================================
Copyright (c) 2008 Joel de Guzman
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)
==============================================================================*/
#include <boost/config.hpp>
#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && \
+6
View File
@@ -1,3 +1,9 @@
/*=============================================================================
Copyright (c) 2009 Joel de Guzman
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)
==============================================================================*/
#include <boost/mpl/vector.hpp>
#include <boost/fusion/support.hpp>