D++ (DPP)
C++ Discord API Bot Library
dpp::detail Namespace Reference

Implementation details for internal use only. More...

Namespaces

namespace  async
 
namespace  coroutine
 
namespace  event_router
 Internal cogwheels for dpp::event_router_t.
 
namespace  job
 
namespace  promise
 
namespace  std_coroutine
 Alias for either std or std::experimental depending on compiler and library. Used by coroutine implementation.
 
namespace  task
 
namespace  when_any
 Internal cogwheels for dpp::when_any.
 

Typedefs

template<typename T >
using awaitable_result = decltype(co_await_resolve(std::declval< T >()).await_resume())
 Convenience alias for the result of a certain awaitable's await_resume. More...
 

Functions

decltype(auto) co_await_resolve (auto &&expr)
 Mimics the compiler's behavior of using co_await. That is, it returns whichever works first, in order : expr.operator co_await(); > operator co_await(expr) > expr More...
 

Variables

template<typename T >
constexpr bool has_co_await_member
 Concept to check if a type has a useable operator co_await() member. More...
 
template<typename T >
constexpr bool has_free_co_await
 Concept to check if a type has a useable overload of the free function operator co_await(expr) More...
 
template<typename T >
constexpr bool has_await_members
 Concept to check if a type has useable await_ready(), await_suspend() and await_resume() member functions. More...
 
template<typename T >
constexpr bool awaitable_type
 Concept to check if a type can be used with co_await. More...
 

Detailed Description

Implementation details for internal use only.

Attention
This is only meant to be used by D++ internally. Support will not be given regarding the facilities in this namespace.

Typedef Documentation

◆ awaitable_result

template<typename T >
using dpp::detail::awaitable_result = typedef decltype(co_await_resolve(std::declval<T>()).await_resume())

Convenience alias for the result of a certain awaitable's await_resume.

Function Documentation

◆ co_await_resolve()

decltype(auto) dpp::detail::co_await_resolve ( auto &&  expr)

Mimics the compiler's behavior of using co_await. That is, it returns whichever works first, in order : expr.operator co_await(); > operator co_await(expr) > expr

This function is conditionally noexcept, if the returned expression also is.

Variable Documentation

◆ awaitable_type

template<typename T >
constexpr bool dpp::detail::awaitable_type
inlineconstexpr

Concept to check if a type can be used with co_await.

Note
This is actually a C++20 concept but Doxygen doesn't do well with them

◆ has_await_members

template<typename T >
constexpr bool dpp::detail::has_await_members
inlineconstexpr

Concept to check if a type has useable await_ready(), await_suspend() and await_resume() member functions.

Note
This is actually a C++20 concept but Doxygen doesn't do well with them

◆ has_co_await_member

template<typename T >
constexpr bool dpp::detail::has_co_await_member
inlineconstexpr

Concept to check if a type has a useable operator co_await() member.

Note
This is actually a C++20 concept but Doxygen doesn't do well with them

◆ has_free_co_await

template<typename T >
constexpr bool dpp::detail::has_free_co_await
inlineconstexpr

Concept to check if a type has a useable overload of the free function operator co_await(expr)

Note
This is actually a C++20 concept but Doxygen doesn't do well with them
D++ Library version 10.0.34D++ Library version 10.0.33D++ Library version 10.0.32D++ Library version 10.0.31D++ Library version 10.0.30D++ Library version 10.0.29D++ Library version 10.0.28D++ Library version 10.0.27D++ Library version 10.0.26D++ Library version 10.0.25D++ Library version 10.0.24D++ Library version 10.0.23D++ Library version 10.0.22D++ Library version 10.0.21D++ Library version 10.0.20D++ Library version 10.0.19D++ Library version 10.0.18D++ Library version 10.0.17D++ Library version 10.0.16D++ Library version 10.0.15D++ Library version 10.0.14D++ Library version 10.0.13D++ Library version 10.0.12D++ Library version 10.0.11D++ Library version 10.0.10D++ Library version 10.0.9D++ Library version 10.0.8D++ Library version 10.0.7D++ Library version 10.0.6D++ Library version 10.0.5D++ Library version 10.0.4D++ Library version 10.0.3D++ Library version 10.0.2D++ Library version 10.0.1D++ Library version 10.0.0D++ Library version 9.0.19D++ Library version 9.0.18D++ Library version 9.0.17D++ Library version 9.0.16D++ Library version 9.0.15D++ Library version 9.0.14D++ Library version 9.0.13D++ Library version 9.0.12D++ Library version 9.0.11D++ Library version 9.0.10D++ Library version 9.0.9D++ Library version 9.0.8D++ Library version 9.0.7D++ Library version 9.0.6D++ Library version 9.0.5D++ Library version 9.0.4D++ Library version 9.0.3D++ Library version 9.0.2D++ Library version 9.0.1D++ Library version 9.0.0D++ Library version 1.0.2D++ Library version 1.0.1D++ Library version 1.0.0