hpx/execution/executors/polymorphic_executor.hpp#

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace parallel
namespace execution
template<typename Sig>
class polymorphic_executor#
template<typename R, typename ...Ts>
class polymorphic_executor<R(Ts...)> : private hpx::parallel::execution::detail::polymorphic_executor_base#

Public Types

template<typename T>
using future_type = hpx::future<R>#

Public Functions

inline constexpr polymorphic_executor() noexcept#
inline polymorphic_executor(polymorphic_executor const &other)#
inline polymorphic_executor(polymorphic_executor &&other) noexcept#
inline polymorphic_executor &operator=(polymorphic_executor const &other)#
inline polymorphic_executor &operator=(polymorphic_executor &&other) noexcept#
template<typename Exec, typename PE = typename std::decay<Exec>::type, typename Enable = typename std::enable_if<!std::is_same<PE, polymorphic_executor>::value>::type>
inline polymorphic_executor(Exec &&exec)#
template<typename Exec, typename PE = typename std::decay<Exec>::type, typename Enable = typename std::enable_if<!std::is_same<PE, polymorphic_executor>::value>::type>
inline polymorphic_executor &operator=(Exec &&exec)#
inline void reset() noexcept#
template<typename F>
inline void post(F &&f, Ts... ts) const#
template<typename F>
inline R sync_execute(F &&f, Ts... ts) const#
template<typename F>
inline hpx::future<R> async_execute(F &&f, Ts... ts) const#
template<typename F, typename Future>
inline hpx::future<R> then_execute(F &&f, Future &&predecessor, Ts&&... ts) const#
template<typename F, typename Shape>
inline std::vector<R> bulk_sync_execute(F &&f, Shape const &s, Ts&&... ts) const#
template<typename F, typename Shape>
inline std::vector<hpx::future<R>> bulk_async_execute(F &&f, Shape const &s, Ts&&... ts) const#
template<typename F, typename Shape>
inline hpx::future<std::vector<R>> bulk_then_execute(F &&f, Shape const &s, hpx::shared_future<void> const &predecessor, Ts&&... ts) const#

Private Types

using base_type = detail::polymorphic_executor_base#
using vtable = detail::polymorphic_executor_vtable<R(Ts...)>#

Private Functions

inline void assign(std::nullptr_t) noexcept#
template<typename Exec>
inline void assign(Exec &&exec)#

Private Static Functions

static inline constexpr vtable const *get_empty_vtable() noexcept#
template<typename T>
static inline constexpr vtable const *get_vtable() noexcept#