hpx/execution/executors/polymorphic_executor.hpp#

Defined in header 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>
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 = std::decay_t<Exec>, typename Enable = std::enable_if_t<!std::is_same_v<PE, polymorphic_executor>>>
inline polymorphic_executor(Exec &&exec)#
template<typename Exec, typename PE = std::decay_t<Exec>, typename Enable = std::enable_if_t<!std::is_same_v<PE, polymorphic_executor>>>
inline polymorphic_executor &operator=(Exec &&exec)#
inline void reset() noexcept#

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#

Friends

template<typename F>
inline friend void tag_invoke(hpx::parallel::execution::post_t, polymorphic_executor const &exec, F &&f, Ts... ts)#
template<typename F>
inline friend R tag_invoke(hpx::parallel::execution::sync_execute_t, polymorphic_executor const &exec, F &&f, Ts... ts)#
template<typename F>
inline friend hpx::future<R> tag_invoke(hpx::parallel::execution::async_execute_t, polymorphic_executor const &exec, F &&f, Ts... ts)#
template<typename F, typename Future>
inline friend hpx::future<R> tag_invoke(hpx::parallel::execution::then_execute_t, polymorphic_executor const &exec, F &&f, Future &&predecessor, Ts&&... ts)#
template<typename F, typename Shape>
inline friend std::vector<R> tag_invoke(hpx::parallel::execution::bulk_sync_execute_t, polymorphic_executor const &exec, F &&f, Shape const &s, Ts&&... ts)#
template<typename F, typename Shape>
inline friend std::vector<hpx::future<R>> tag_invoke(hpx::parallel::execution::bulk_async_execute_t, polymorphic_executor const &exec, F &&f, Shape const &s, Ts&&... ts)#
template<typename F, typename Shape>
inline friend hpx::future<std::vector<R>> tag_invoke(hpx::parallel::execution::bulk_then_execute_t, polymorphic_executor const &exec, F &&f, Shape const &s, hpx::shared_future<void> const &predecessor, Ts&&... ts)#