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
|
@ -30,7 +30,7 @@ namespace sprout {
|
|||
public:
|
||||
template<typename... As>
|
||||
explicit SPROUT_CONSTEXPR expr(As&&... args)
|
||||
: args_(sprout::forward<As>(args)...)
|
||||
: args_(SPROUT_FORWARD(As, args)...)
|
||||
{}
|
||||
SPROUT_CONSTEXPR args_type const& args() const {
|
||||
return args_;
|
||||
|
|
|
@ -23,7 +23,7 @@ namespace sprout {
|
|||
inline SPROUT_CONSTEXPR typename sprout::weed::traits::expr_of<Tag, Args...>::type
|
||||
make_expr(Args&&... args) {
|
||||
return typename sprout::weed::traits::expr_of<Tag, Args...>::type(
|
||||
sprout::weed::make_terminal_or_expr(sprout::forward<Args>(args))...
|
||||
sprout::weed::make_terminal_or_expr(SPROUT_FORWARD(Args, args))...
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace sprout {
|
|||
typename sprout::weed::traits::terminal_of<Arg>::type
|
||||
>::type make_terminal(Arg&& arg) {
|
||||
return typename sprout::weed::traits::terminal_of<Arg>::type(
|
||||
sprout::forward<Arg>(arg)
|
||||
SPROUT_FORWARD(Arg, arg)
|
||||
);
|
||||
}
|
||||
template<typename Arg>
|
||||
|
@ -39,7 +39,7 @@ namespace sprout {
|
|||
typename sprout::weed::traits::terminal_of<Arg>::type
|
||||
>::type make_terminal(Arg&& arg) {
|
||||
return typename sprout::weed::traits::terminal_of<Arg>::type(
|
||||
sprout::to_string(sprout::forward<Arg>(arg))
|
||||
sprout::to_string(SPROUT_FORWARD(Arg, arg))
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace sprout {
|
|||
>::value,
|
||||
typename sprout::weed::traits::terminal_or_expr_of<Arg>::type
|
||||
>::type make_terminal_or_expr(Arg&& arg) {
|
||||
return sprout::forward<Arg>(arg);
|
||||
return SPROUT_FORWARD(Arg, arg);
|
||||
}
|
||||
template<typename Arg>
|
||||
inline SPROUT_CONSTEXPR typename std::enable_if<
|
||||
|
@ -36,7 +36,7 @@ namespace sprout {
|
|||
>::value,
|
||||
typename sprout::weed::traits::terminal_or_expr_of<Arg>::type
|
||||
>::type make_terminal_or_expr(Arg&& arg) {
|
||||
return sprout::weed::make_terminal(sprout::forward<Arg>(arg));
|
||||
return sprout::weed::make_terminal(SPROUT_FORWARD(Arg, arg));
|
||||
}
|
||||
} // namespace weed
|
||||
} // namespace sprout
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace sprout {
|
|||
Arg
|
||||
>::type operator&(Arg&& arg) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::address_of>(
|
||||
sprout::forward<Arg>(arg)
|
||||
SPROUT_FORWARD(Arg, arg)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -39,8 +39,8 @@ namespace sprout {
|
|||
Arg2
|
||||
>::type operator|(Arg1&& arg1, Arg2&& arg2) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::bitwise_or>(
|
||||
sprout::forward<Arg1>(arg1),
|
||||
sprout::forward<Arg2>(arg2)
|
||||
SPROUT_FORWARD(Arg1, arg1),
|
||||
SPROUT_FORWARD(Arg2, arg2)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace sprout {
|
|||
Arg
|
||||
>::type operator*(Arg&& arg) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::dereference>(
|
||||
sprout::forward<Arg>(arg)
|
||||
SPROUT_FORWARD(Arg, arg)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace sprout {
|
|||
Arg
|
||||
>::type operator!(Arg&& arg) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::logical_not>(
|
||||
sprout::forward<Arg>(arg)
|
||||
SPROUT_FORWARD(Arg, arg)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -36,8 +36,8 @@ namespace sprout {
|
|||
Arg2
|
||||
>::type operator->*(Arg1&& arg1, Arg2&& arg2) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::mem_ptr>(
|
||||
sprout::forward<Arg1>(arg1),
|
||||
sprout::forward<Arg2>(arg2)
|
||||
SPROUT_FORWARD(Arg1, arg1),
|
||||
SPROUT_FORWARD(Arg2, arg2)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -39,8 +39,8 @@ namespace sprout {
|
|||
Arg2
|
||||
>::type operator-(Arg1&& arg1, Arg2&& arg2) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::minus>(
|
||||
sprout::forward<Arg1>(arg1),
|
||||
sprout::forward<Arg2>(arg2)
|
||||
SPROUT_FORWARD(Arg1, arg1),
|
||||
SPROUT_FORWARD(Arg2, arg2)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -39,8 +39,8 @@ namespace sprout {
|
|||
Arg2
|
||||
>::type operator%(Arg1&& arg1, Arg2&& arg2) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::modulus>(
|
||||
sprout::forward<Arg1>(arg1),
|
||||
sprout::forward<Arg2>(arg2)
|
||||
SPROUT_FORWARD(Arg1, arg1),
|
||||
SPROUT_FORWARD(Arg2, arg2)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace sprout {
|
|||
Arg
|
||||
>::type operator-(Arg&& arg) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::negate>(
|
||||
sprout::forward<Arg>(arg)
|
||||
SPROUT_FORWARD(Arg, arg)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -39,8 +39,8 @@ namespace sprout {
|
|||
Arg2
|
||||
>::type operator>>(Arg1&& arg1, Arg2&& arg2) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::shift_left>(
|
||||
sprout::forward<Arg1>(arg1),
|
||||
sprout::forward<Arg2>(arg2)
|
||||
SPROUT_FORWARD(Arg1, arg1),
|
||||
SPROUT_FORWARD(Arg2, arg2)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace sprout {
|
|||
Arg
|
||||
>::type operator+(Arg&& arg) {
|
||||
return sprout::weed::make_expr<sprout::weed::tag::unary_plus>(
|
||||
sprout::forward<Arg>(arg)
|
||||
SPROUT_FORWARD(Arg, arg)
|
||||
);
|
||||
}
|
||||
} // namespace weed
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace sprout {
|
|||
>::result_type
|
||||
operator()(T&& t) const {
|
||||
typedef eval<typename sprout::remove_shallow_cvref<T>::type> eval_type;
|
||||
return eval_type()(sprout::forward<T>(t));
|
||||
return eval_type()(SPROUT_FORWARD(T, t));
|
||||
}
|
||||
};
|
||||
//
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue