PXL
pxl::detail::TaskCountConfigured< Builder > Class Template Reference

Runnable builder that preserves the value category of settings. More...

#include <task_count.hpp>

Inheritance diagram for pxl::detail::TaskCountConfigured< Builder >:
Collaboration diagram for pxl::detail::TaskCountConfigured< Builder >:

Public Member Functions

 TaskCountConfigured (Builder &&builder)
 
 TaskCountConfigured (TaskCountConfigured &&) noexcept=default
 
TaskCountConfigured & operator= (TaskCountConfigured &&) noexcept=default
 
 TaskCountConfigured (const TaskCountConfigured &)=delete
 
TaskCountConfigured & operator= (const TaskCountConfigured &)=delete
 
template<auto Func, typename... Args, typename B = Builder>
auto stage (Args &&... args) &-> decltype(std::declval< B & >().template stage< Func >(std::forward< Args >(args)...))
 
template<auto Func, typename... Args, typename B = Builder>
auto stage (Args &&... args) &&-> decltype(std::declval< B && >().template stage< Func >(std::forward< Args >(args)...))
 
template<typename B = Builder>
auto stage () &-> decltype(std::declval< B & >().stage())
 
template<typename B = Builder>
auto stage () &&-> decltype(std::declval< B && >().takeStageGroup())
 

Detailed Description

template<typename Builder>
class pxl::detail::TaskCountConfigured< Builder >

Runnable builder that preserves the value category of settings.

The legacy builders return lvalue references from their settings. Keep those symbols and layouts intact, while a request completed by tasks() can continue through settings to an rvalue-only stage()/add() transition. Named requests still require an explicit move before such a transition.

Definition at line 23 of file task_count.hpp.

Constructor & Destructor Documentation

◆ TaskCountConfigured() [1/3]

template<typename Builder >
pxl::detail::TaskCountConfigured< Builder >::TaskCountConfigured ( Builder &&  builder)
inlineexplicit

Definition at line 26 of file task_count.hpp.

27  : Builder(std::move(builder))
28  {
29  }

◆ TaskCountConfigured() [2/3]

template<typename Builder >
pxl::detail::TaskCountConfigured< Builder >::TaskCountConfigured ( TaskCountConfigured< Builder > &&  )
defaultnoexcept

◆ TaskCountConfigured() [3/3]

template<typename Builder >
pxl::detail::TaskCountConfigured< Builder >::TaskCountConfigured ( const TaskCountConfigured< Builder > &  )
delete

Member Function Documentation

◆ operator=() [1/2]

template<typename Builder >
TaskCountConfigured& pxl::detail::TaskCountConfigured< Builder >::operator= ( const TaskCountConfigured< Builder > &  )
delete

◆ operator=() [2/2]

template<typename Builder >
TaskCountConfigured& pxl::detail::TaskCountConfigured< Builder >::operator= ( TaskCountConfigured< Builder > &&  )
defaultnoexcept

◆ stage() [1/4]

template<typename Builder >
template<typename B = Builder>
auto pxl::detail::TaskCountConfigured< Builder >::stage ( ) && -> decltype(std::declval<B&&>().takeStageGroup())
inline

Definition at line 86 of file task_count.hpp.

87  {
88  return std::move(static_cast<Builder&>(*this)).takeStageGroup();
89  }

◆ stage() [2/4]

template<typename Builder >
template<typename B = Builder>
auto pxl::detail::TaskCountConfigured< Builder >::stage ( ) & -> decltype(std::declval<B&>().stage())
inline

Definition at line 78 of file task_count.hpp.

79  {
80  return Builder::stage();
81  }

◆ stage() [3/4]

template<typename Builder >
template<auto Func, typename... Args, typename B = Builder>
auto pxl::detail::TaskCountConfigured< Builder >::stage ( Args &&...  args) && -> decltype(std::declval<B&&>().template stage<Func>(std::forward<Args>(args)...))
inline

Definition at line 72 of file task_count.hpp.

73  {
74  return std::move(static_cast<Builder&>(*this)).template stage<Func>(std::forward<Args>(args)...);
75  }

◆ stage() [4/4]

template<typename Builder >
template<auto Func, typename... Args, typename B = Builder>
auto pxl::detail::TaskCountConfigured< Builder >::stage ( Args &&...  args) & -> decltype(std::declval<B&>().template stage<Func>(std::forward<Args>(args)...))
inline

Definition at line 66 of file task_count.hpp.

67  {
68  return Builder::template stage<Func>(std::forward<Args>(args)...);
69  }

The documentation for this class was generated from the following file: