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

@ -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_;

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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));
}
};
//