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:
parent
7831105add
commit
274122efb2
202 changed files with 750 additions and 741 deletions
|
@ -23,7 +23,7 @@ namespace sprout {
|
|||
typename std::remove_reference<Visitable>::type
|
||||
>::type
|
||||
apply_visitor(Visitor&& visitor, Visitable&& visitable) {
|
||||
return sprout::forward<Visitable>(visitable).apply_visitor(sprout::forward<Visitor>(visitor));
|
||||
return SPROUT_FORWARD(Visitable, visitable).apply_visitor(SPROUT_FORWARD(Visitor, visitor));
|
||||
}
|
||||
} // namespace sprout
|
||||
|
||||
|
|
|
@ -36,9 +36,9 @@ namespace sprout {
|
|||
{}
|
||||
template<typename T>
|
||||
SPROUT_CONSTEXPR auto operator()(T&& t) const
|
||||
-> decltype(std::declval<holder_type const>().get()(sprout::forward<T>(t)))
|
||||
-> decltype(std::declval<holder_type const>().get()(SPROUT_FORWARD(T, t)))
|
||||
{
|
||||
return v_.get()(sprout::forward<T>(t));
|
||||
return v_.get()(SPROUT_FORWARD(T, t));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -62,9 +62,9 @@ namespace sprout {
|
|||
{}
|
||||
template<typename T>
|
||||
SPROUT_CONSTEXPR auto operator()(T&& t) const
|
||||
-> decltype(std::declval<holder_type const>().get()(sprout::forward<T>(t)))
|
||||
-> decltype(std::declval<holder_type const>().get()(SPROUT_FORWARD(T, t)))
|
||||
{
|
||||
return v_.get()(sprout::forward<T>(t));
|
||||
return v_.get()(SPROUT_FORWARD(T, t));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ namespace sprout {
|
|||
return sprout::tuples::make<tuple_type>(
|
||||
sprout::tuples::flexibly_construct,
|
||||
typename sprout::tuples::tuple_element<Indexes, tuple_type>::type()...,
|
||||
sprout::forward<T>(operand)
|
||||
SPROUT_FORWARD(T, operand)
|
||||
);
|
||||
}
|
||||
protected:
|
||||
|
@ -57,7 +57,7 @@ namespace sprout {
|
|||
{}
|
||||
template<typename T, typename Index>
|
||||
SPROUT_CONSTEXPR variant_impl(T&& operand, Index)
|
||||
: tuple_(init(sprout::forward<T>(operand), sprout::make_index_tuple<Index::value>::make()))
|
||||
: tuple_(init(SPROUT_FORWARD(T, operand), sprout::make_index_tuple<Index::value>::make()))
|
||||
, which_(Index::value)
|
||||
{
|
||||
static_assert(Index::value < sizeof...(Types), "variant<>: invalid operand");
|
||||
|
@ -208,7 +208,7 @@ namespace sprout {
|
|||
I == sizeof...(Types) - 1,
|
||||
Result
|
||||
>::type visit(Tuple&& t, Visitor&& v, int) {
|
||||
return sprout::forward<Visitor>(v)(sprout::tuples::get<I>(sprout::forward<Tuple>(t)));
|
||||
return SPROUT_FORWARD(Visitor, v)(sprout::tuples::get<I>(SPROUT_FORWARD(Tuple, t)));
|
||||
}
|
||||
template<typename Result, int I, typename Tuple, typename Visitor>
|
||||
static SPROUT_CONSTEXPR typename std::enable_if<
|
||||
|
@ -216,8 +216,8 @@ namespace sprout {
|
|||
Result
|
||||
>::type visit(Tuple&& t, Visitor&& v, int which) {
|
||||
return I == which
|
||||
? sprout::forward<Visitor>(v)(sprout::tuples::get<I>(sprout::forward<Tuple>(t)))
|
||||
: visit<Result, I + 1>(sprout::forward<Tuple>(t), sprout::forward<Visitor>(v), which)
|
||||
? SPROUT_FORWARD(Visitor, v)(sprout::tuples::get<I>(SPROUT_FORWARD(Tuple, t)))
|
||||
: visit<Result, I + 1>(SPROUT_FORWARD(Tuple, t), SPROUT_FORWARD(Visitor, v), which)
|
||||
;
|
||||
}
|
||||
private:
|
||||
|
@ -233,7 +233,7 @@ namespace sprout {
|
|||
template<typename T>
|
||||
SPROUT_CONSTEXPR variant(T&& operand)
|
||||
: impl_type(
|
||||
sprout::forward<T>(operand),
|
||||
SPROUT_FORWARD(T, operand),
|
||||
sprout::types::find_index<decayed_tuple_type, typename std::decay<T>::type>()
|
||||
)
|
||||
{}
|
||||
|
@ -255,7 +255,7 @@ namespace sprout {
|
|||
}
|
||||
template<typename T>
|
||||
SPROUT_CXX14_CONSTEXPR variant& operator=(T&& rhs) {
|
||||
static_cast<impl_type&>(*this) = variant(sprout::forward<T>(rhs));
|
||||
static_cast<impl_type&>(*this) = variant(SPROUT_FORWARD(T, rhs));
|
||||
return *this;
|
||||
}
|
||||
// queries
|
||||
|
@ -330,7 +330,7 @@ namespace sprout {
|
|||
apply_visitor(Visitor&& visitor) const {
|
||||
typedef typename visitor_result<typename std::remove_reference<Visitor>::type, variant const>::type result_type;
|
||||
return SPROUT_ASSERT(0 <= which_ && sprout::math::less(which_, sizeof...(Types))),
|
||||
visit<result_type, 0>(tuple_, sprout::forward<Visitor>(visitor), which_)
|
||||
visit<result_type, 0>(tuple_, SPROUT_FORWARD(Visitor, visitor), which_)
|
||||
;
|
||||
}
|
||||
template<typename Visitor>
|
||||
|
@ -338,7 +338,7 @@ namespace sprout {
|
|||
apply_visitor(Visitor&& visitor) {
|
||||
typedef typename visitor_result<typename std::remove_reference<Visitor>::type, variant>::type result_type;
|
||||
return SPROUT_ASSERT(0 <= which_ && sprout::math::less(which_, sizeof...(Types))),
|
||||
visit<result_type, 0>(tuple_, sprout::forward<Visitor>(visitor), which_)
|
||||
visit<result_type, 0>(tuple_, SPROUT_FORWARD(Visitor, visitor), which_)
|
||||
;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue