mpc
Haskell-like feature supports in C++
|
Implements a perfect-forwarding call wrapper. More...
Public Member Functions | |
template<class... BoundArgs, class = std::enable_if_t<std::is_constructible_v<std::tuple<Bound...>, BoundArgs&&...>>> | |
constexpr | partial (Op const &op, BoundArgs &&... bound) |
template<class... BoundArgs, class = std::enable_if_t<std::is_constructible_v<std::tuple<Bound...>, BoundArgs&&...>>> | |
constexpr | partial (Op &&op, BoundArgs &&... bound) |
partial (partial const &)=default | |
partial (partial &&)=default | |
partial & | operator= (partial const &)=default |
partial & | operator= (partial &&)=default |
template<class... Args> | |
constexpr auto | operator() (Args &&... args) &noexcept(noexcept(__call(*op_, bound_, std::index_sequence_for< Bound... >(), std::forward< Args >(args)...))) -> decltype(__call(*op_, bound_, std::index_sequence_for< Bound... >(), std::forward< Args >(args)...)) |
template<class... Args> | |
constexpr auto | operator() (Args &&... args) const &noexcept(noexcept(__call(*op_, bound_, std::index_sequence_for< Bound... >(), std::forward< Args >(args)...))) -> decltype(__call(*op_, bound_, std::index_sequence_for< Bound... >(), std::forward< Args >(args)...)) |
template<class... Args> | |
constexpr auto | operator() (Args &&... args) &&noexcept(noexcept(__call(*std::move(op_), std::move(bound_), std::index_sequence_for< Bound... >(), std::forward< Args >(args)...))) -> decltype(__call(*std::move(op_), std::move(bound_), std::index_sequence_for< Bound... >(), std::forward< Args >(args)...)) |
template<class... Args> | |
constexpr auto | operator() (Args &&... args) const &&noexcept(noexcept(__call(*std::move(op_), std::move(bound_), std::index_sequence_for< Bound... >(), std::forward< Args >(args)...))) -> decltype(__call(*std::move(op_), std::move(bound_), std::index_sequence_for< Bound... >(), std::forward< Args >(args)...)) |
template<class Arg > | |
constexpr auto | operator% (Arg &&arg) &noexcept(noexcept((*this)(std::forward< Arg >(arg)))) -> decltype((*this)(std::forward< Arg >(arg))) |
template<class Arg > | |
constexpr auto | operator% (Arg &&arg) const &noexcept(noexcept((*this)(std::forward< Arg >(arg)))) -> decltype((*this)(std::forward< Arg >(arg))) |
template<class Arg > | |
constexpr auto | operator% (Arg &&arg) &&noexcept(noexcept(std::move(*this)(std::forward< Arg >(arg)))) -> decltype(std::move(*this)(std::forward< Arg >(arg))) |
template<class Arg > | |
constexpr auto | operator% (Arg &&arg) const &&noexcept(noexcept(std::move(*this)(std::forward< Arg >(arg)))) -> decltype(std::move(*this)(std::forward< Arg >(arg))) |
Friends | |
template<class Op2 , class... Args, class > | |
constexpr friend auto | make_partial (Op2 &&, Args &&...) |
Implements a perfect-forwarding call wrapper.