1
0
Fork 0
mirror of https://github.com/bolero-MURAKAMI/Sprout synced 2025-08-03 12:49:50 +00:00

add SPROUT_FORWARD - workaround for ICC

This commit is contained in:
bolero-MURAKAMI 2014-02-22 16:32:51 +09:00
parent 7831105add
commit 274122efb2
202 changed files with 750 additions and 741 deletions

View file

@ -44,9 +44,8 @@ namespace sprout {
template<std::size_t I, typename... Types>
inline SPROUT_CONSTEXPR typename sprout::tuples::tuple_element<I, sprout::tuples::tuple<Types...> >::type&&
tuple_get(sprout::tuples::tuple<Types...>&& t) SPROUT_NOEXCEPT {
return sprout::forward<typename sprout::tuples::tuple_element<I, sprout::tuples::tuple<Types...> >::type>(
sprout::tuples::tuple_get<I>(t)
);
typedef typename sprout::tuples::tuple_element<I, sprout::tuples::tuple<Types...> >::type type;
return SPROUT_FORWARD(type, sprout::tuples::tuple_get<I>(t));
}
template<std::size_t I, typename... Types>
inline SPROUT_CONSTEXPR typename sprout::tuples::tuple_element<I, sprout::tuples::tuple<Types...> >::type const&
@ -96,7 +95,7 @@ namespace sprout_tuple_detail {
call_tuple_get(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(tuple_get<I>(std::declval<T>())))
{
return tuple_get<I>(sprout::forward<T>(t));
return tuple_get<I>(SPROUT_FORWARD(T, t));
}
} // namespace sprout_tuple_detail
@ -116,7 +115,7 @@ namespace sprout {
get(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout_tuple_detail::call_tuple_get<I>(std::declval<T>())))
{
return sprout_tuple_detail::call_tuple_get<I>(sprout::forward<T>(t));
return sprout_tuple_detail::call_tuple_get<I>(SPROUT_FORWARD(T, t));
}
} // namespace tuples

View file

@ -25,7 +25,7 @@ namespace sprout {
template<typename... Types>
inline SPROUT_CONSTEXPR sprout::tuples::tuple<typename sprout::strip_reference<typename std::decay<Types>::type>::type...>
make_tuple(Types&&... args) {
return sprout::tuples::tuple<typename std::decay<Types>::type...>(sprout::forward<Types>(args)...);
return sprout::tuples::tuple<typename std::decay<Types>::type...>(SPROUT_FORWARD(Types, args)...);
}
//
@ -34,7 +34,7 @@ namespace sprout {
template<typename... Types>
inline SPROUT_CONSTEXPR sprout::tuples::tuple<Types&&...>
forward_as_tuple(Types&&... args) SPROUT_NOEXCEPT {
return sprout::tuples::tuple<Types&&...>(sprout::forward<Types>(args)...);
return sprout::tuples::tuple<Types&&...>(SPROUT_FORWARD(Types, args)...);
}
//
@ -124,7 +124,7 @@ namespace sprout {
template<typename... Args>
static SPROUT_CONSTEXPR Result
call(Args&&... args) {
return Result(sprout::forward<Args>(args)...);
return Result(SPROUT_FORWARD(Args, args)...);
}
};
template<typename Result, sprout::index_t... Indexes, typename Head, typename... Tail>
@ -138,8 +138,8 @@ namespace sprout {
typename sprout::tuples::detail::tuple_cat_1st_indexes<Tail...>::type,
Tail...
>::call(
sprout::forward<Args>(args)...,
sprout::tuples::get<Indexes>(sprout::forward<T>(t))...
SPROUT_FORWARD(Args, args)...,
sprout::tuples::get<Indexes>(SPROUT_FORWARD(T, t))...
);
}
};
@ -154,7 +154,7 @@ namespace sprout {
typename sprout::tuples::results::tuple_cat<Tuples...>::type,
typename sprout::tuples::detail::tuple_cat_1st_indexes<Tuples...>::type,
Tuples...
>::call(sprout::forward<Tuples>(tuples)...);
>::call(SPROUT_FORWARD(Tuples, tuples)...);
}
} // namespace tuples

View file

@ -34,7 +34,7 @@ namespace sprout {
typename
>
inline SPROUT_CONSTEXPR sprout::tuples::tuple<Types...>::tuple(sprout::pair<UType1, UType2>&& t)
: impl_type(sprout::forward<typename sprout::pair<UType1, UType2>::first_type>(t.first), sprout::forward<typename sprout::pair<UType1, UType2>::second_type>(t.second))
: impl_type(SPROUT_FORWARD(UType1, t.first), SPROUT_FORWARD(UType2, t.second))
{}
template<typename... Types>
@ -51,7 +51,7 @@ namespace sprout {
typename
>
inline SPROUT_CONSTEXPR sprout::tuples::tuple<Types...>::tuple(sprout::tuples::flexibly_construct_t, sprout::pair<UType1, UType2>&& t)
: impl_type(sprout::forward<typename sprout::pair<UType1, UType2>::first_type>(t.first), sprout::forward<typename sprout::pair<UType1, UType2>::second_type>(t.second))
: impl_type(SPROUT_FORWARD(UType1, t.first), SPROUT_FORWARD(UType2, t.second))
{}
} // namespace tuples
} // namespace sprout

View file

@ -52,7 +52,7 @@ namespace sprout {
// {}
// template<typename UHead>
// explicit SPROUT_CONSTEXPR head_base(UHead&& v)
// : Head(sprout::forward<UHead>(v))
// : Head(SPROUT_FORWARD(UHead, v))
// {}
// };
template<std::size_t Index, typename Head>
@ -75,7 +75,7 @@ namespace sprout {
{}
template<typename UHead>
explicit SPROUT_CONSTEXPR head_base(UHead&& v)
: head_(sprout::forward<UHead>(v))
: head_(SPROUT_FORWARD(UHead, v))
{}
};
template<std::size_t Index, typename Head>
@ -98,7 +98,7 @@ namespace sprout {
{}
template<typename UHead>
explicit SPROUT_CONSTEXPR head_base(UHead&& v)
: head_(sprout::forward<UHead>(v))
: head_(SPROUT_FORWARD(UHead, v))
{}
};
@ -185,8 +185,8 @@ namespace sprout {
{}
template<typename UHead, typename... UTail>
explicit SPROUT_CONSTEXPR tuple_impl(UHead&& h, UTail&&... tail)
: inherited_type(sprout::forward<UTail>(tail)...)
, base_type(sprout::forward<UHead>(h))
: inherited_type(SPROUT_FORWARD(UTail, tail)...)
, base_type(SPROUT_FORWARD(UHead, h))
{}
tuple_impl(tuple_impl const&) = default;
#if SPROUT_GCC_IN_RANGE((4, 8, 0), (4, 8, 2))
@ -195,7 +195,7 @@ namespace sprout {
SPROUT_CONSTEXPR tuple_impl(tuple_impl&& t)
SPROUT_NOEXCEPT_EXPR(std::is_nothrow_move_constructible<Head>::value && std::is_nothrow_move_constructible<inherited_type>::value)
: inherited_type(sprout::move(tail(t)))
, base_type(sprout::forward<Head>(head(t)))
, base_type(SPROUT_FORWARD(Head, head(t)))
{}
#endif
template<typename... UTypes>
@ -206,7 +206,7 @@ namespace sprout {
template<typename UHead, typename... UTail>
SPROUT_CONSTEXPR tuple_impl(tuple_impl<Index, UHead, UTail...>&& t)
: inherited_type(sprout::move(sprout::tuples::detail::tuple_impl<Index, UHead, UTail...>::tail(t)))
, base_type(sprout::forward<UHead>(sprout::tuples::detail::tuple_impl<Index, UHead, UTail...>::head(t)))
, base_type(SPROUT_FORWARD(UHead, (sprout::tuples::detail::tuple_impl<Index, UHead, UTail...>::head(t))))
{}
SPROUT_CONSTEXPR tuple_impl(tuple_impl<Index> const&)
: inherited_type()
@ -224,7 +224,7 @@ namespace sprout {
SPROUT_CXX14_CONSTEXPR tuple_impl& operator=(tuple_impl&& t)
SPROUT_NOEXCEPT_EXPR(std::is_nothrow_move_assignable<Head>::value && std::is_nothrow_move_assignable<inherited_type>::value)
{
head(*this) = sprout::forward<Head>(head(t));
head(*this) = SPROUT_FORWARD(Head, head(t));
tail(*this) = sprout::move(tail(t));
return *this;
}
@ -236,7 +236,7 @@ namespace sprout {
}
template<typename UHead, typename... UTail>
SPROUT_CXX14_CONSTEXPR tuple_impl& operator=(sprout::tuples::detail::tuple_impl<Index, UHead, UTail...>&& t) {
head(*this) = sprout::forward<UHead>(sprout::tuples::detail::tuple_impl<Index, UHead, UTail...>::head(t));
head(*this) = SPROUT_FORWARD(UHead, (sprout::tuples::detail::tuple_impl<Index, UHead, UTail...>::head(t)));
tail(*this) = sprout::move(sprout::tuples::detail::tuple_impl<Index, UHead, UTail...>::tail(t));
return *this;
}
@ -319,7 +319,7 @@ namespace sprout {
>::type
>
explicit SPROUT_CONSTEXPR tuple(UTypes&&... elements)
: impl_type(sprout::forward<UTypes>(elements)...)
: impl_type(SPROUT_FORWARD(UTypes, elements)...)
{}
tuple(tuple const&) = default;
tuple(tuple&&) = default;
@ -363,7 +363,7 @@ namespace sprout {
>::type
>
explicit SPROUT_CONSTEXPR tuple(sprout::tuples::flexibly_construct_t, UTypes&&... elements)
: impl_type(sprout::forward<UTypes>(elements)...)
: impl_type(SPROUT_FORWARD(UTypes, elements)...)
{}
template<
typename... UTypes,