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

@ -20,10 +20,10 @@ namespace sprout {
template<typename T>
inline SPROUT_CONSTEXPR auto
first(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<0>(sprout::forward<T>(t))))
-> decltype(sprout::tuples::get<0>(sprout::forward<T>(t)))
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<0>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::tuples::get<0>(SPROUT_FORWARD(T, t)))
{
return sprout::tuples::get<0>(sprout::forward<T>(t));
return sprout::tuples::get<0>(SPROUT_FORWARD(T, t));
}
} // namespace sprout

View file

@ -27,8 +27,8 @@ namespace sprout {
typename sprout::strip_reference<typename std::decay<T1>::type>::type,
typename sprout::strip_reference<typename std::decay<T2>::type>::type
>(
sprout::forward<T1>(x),
sprout::forward<T2>(y)
SPROUT_FORWARD(T1, x),
SPROUT_FORWARD(T2, y)
);
}
} // namespace sprout

View file

@ -63,8 +63,8 @@ namespace sprout {
typename
>
inline SPROUT_CONSTEXPR sprout::pair<T1, T2>::pair(sprout::tuples::tuple<U, V>&& other)
: first(sprout::forward<U>(sprout::tuples::get<0>(other)))
, second(sprout::forward<V>(sprout::tuples::get<1>(other)))
: first(SPROUT_FORWARD(U, sprout::tuples::get<0>(other)))
, second(SPROUT_FORWARD(V, sprout::tuples::get<1>(other)))
{}
template<typename T1, typename T2>
@ -83,8 +83,8 @@ namespace sprout {
typename
>
inline SPROUT_CXX14_CONSTEXPR sprout::pair<T1, T2>& sprout::pair<T1, T2>::operator=(sprout::tuples::tuple<U, V>&& rhs) {
first = sprout::forward<U>(sprout::tuples::get<0>(rhs));
second = sprout::forward<V>(sprout::tuples::get<1>(rhs));
first = SPROUT_FORWARD(U, sprout::tuples::get<0>(rhs));
second = SPROUT_FORWARD(V, sprout::tuples::get<1>(rhs));
return *this;
}
} // namespace sprout

View file

@ -53,8 +53,8 @@ namespace sprout {
>::type
>
SPROUT_CONSTEXPR pair(U&& x, V&& y)
: first(sprout::forward<U>(x))
, second(sprout::forward<V>(y))
: first(SPROUT_FORWARD(U, x))
, second(SPROUT_FORWARD(V, y))
{}
template<
typename U, typename V,
@ -73,8 +73,8 @@ namespace sprout {
>::type
>
SPROUT_CONSTEXPR pair(sprout::pair<U, V>&& other)
: first(sprout::forward<U>(other.first))
, second(sprout::forward<V>(other.second))
: first(SPROUT_FORWARD(U, other.first))
, second(SPROUT_FORWARD(V, other.second))
{}
template<
typename... Args1, typename... Args2,
@ -110,8 +110,8 @@ namespace sprout {
SPROUT_CXX14_CONSTEXPR pair& operator=(pair&& rhs)
SPROUT_NOEXCEPT_EXPR(std::is_nothrow_move_assignable<T1>::value && std::is_nothrow_move_assignable<T2>::value)
{
first = sprout::forward<T1>(rhs.first);
second = sprout::forward<T2>(rhs.second);
first = SPROUT_FORWARD(T1, rhs.first);
second = SPROUT_FORWARD(T2, rhs.second);
return *this;
}
template<
@ -132,8 +132,8 @@ namespace sprout {
>::type
>
SPROUT_CXX14_CONSTEXPR pair& operator=(sprout::pair<U, V>&& rhs) {
first = sprout::forward<U>(rhs.first);
second = sprout::forward<V>(rhs.second);
first = SPROUT_FORWARD(U, rhs.first);
second = SPROUT_FORWARD(V, rhs.second);
return *this;
}
template<

View file

@ -20,10 +20,10 @@ namespace sprout {
template<typename T>
inline SPROUT_CONSTEXPR auto
second(T&& t)
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<1>(sprout::forward<T>(t))))
-> decltype(sprout::tuples::get<1>(sprout::forward<T>(t)))
SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(sprout::tuples::get<1>(SPROUT_FORWARD(T, t))))
-> decltype(sprout::tuples::get<1>(SPROUT_FORWARD(T, t)))
{
return sprout::tuples::get<1>(sprout::forward<T>(t));
return sprout::tuples::get<1>(SPROUT_FORWARD(T, t));
}
} // namespace sprout