YOrch 1.0.0
Loading...
Searching...
No Matches
yorch::context< Ts > Struct Template Reference

Statically typed context container with a compile-time schema. More...

#include <context.hpp>

Public Member Functions

constexpr context ()=default
 Default-constructs the context.
 
template<typename... Us>
requires (sizeof...(Us) == sizeof...(Ts)) && std::constructible_from<std::tuple<Ts...>, Us&&...>
constexpr context (Us &&... xs)
 Explicitly constructs the context from the provided objects.
 
template<typename T >
constexpr T & get () &noexcept
 Returns the stored object of type T.
 
template<typename T >
constexpr const T & get () const &noexcept
 
template<typename T >
constexpr T && get () &&noexcept
 
template<typename T >
constexpr const T && get () const &&noexcept
 

Static Public Member Functions

template<typename T >
static constexpr bool contains () noexcept
 Checks whether a type is present in this context schema.
 

Public Attributes

std::tuple< Ts... > storage
 Underlying storage whose element order matches Ts....
 

Detailed Description

template<typename... Ts>
struct yorch::context< Ts >

Statically typed context container with a compile-time schema.

context<Ts...> stores a fixed set of unique types in a std::tuple and exposes them through type-based access instead of runtime lookup.

Template Parameters
TsTypes stored in the context. Each type must be unique.

Definition at line 105 of file context.hpp.

Constructor & Destructor Documentation

◆ context() [1/2]

template<typename... Ts>
constexpr yorch::context< Ts >::context ( )
constexprdefault

Default-constructs the context.

This constructor is available only when every type in Ts... is default-initializable.

◆ context() [2/2]

template<typename... Ts>
template<typename... Us>
requires (sizeof...(Us) == sizeof...(Ts)) && std::constructible_from<std::tuple<Ts...>, Us&&...>
constexpr yorch::context< Ts >::context ( Us &&...  xs)
inlineexplicitconstexpr

Explicitly constructs the context from the provided objects.

Parameters
xsArguments forwarded to the underlying tuple in Ts... order.

Definition at line 129 of file context.hpp.

Member Function Documentation

◆ contains()

template<typename... Ts>
template<typename T >
static constexpr bool yorch::context< Ts >::contains ( )
inlinestaticconstexprnoexcept

Checks whether a type is present in this context schema.

Template Parameters
TType to query.
Returns
true if and only if T appears exactly once in Ts....

Definition at line 138 of file context.hpp.

◆ get() [1/4]

template<typename... Ts>
template<typename T >
constexpr T && yorch::context< Ts >::get ( ) &&
inlineconstexprnoexcept

Definition at line 163 of file context.hpp.

◆ get() [2/4]

template<typename... Ts>
template<typename T >
constexpr T & yorch::context< Ts >::get ( ) &
inlineconstexprnoexcept

Returns the stored object of type T.

Template Parameters
TType to access.
Returns
A reference to the stored object, preserving the value category and const qualification of the current context.

Definition at line 149 of file context.hpp.

◆ get() [3/4]

template<typename... Ts>
template<typename T >
constexpr const T && yorch::context< Ts >::get ( ) const &&
inlineconstexprnoexcept

Definition at line 170 of file context.hpp.

◆ get() [4/4]

template<typename... Ts>
template<typename T >
constexpr const T & yorch::context< Ts >::get ( ) const &
inlineconstexprnoexcept

Definition at line 156 of file context.hpp.

Member Data Documentation

◆ storage

template<typename... Ts>
std::tuple<Ts...> yorch::context< Ts >::storage

Underlying storage whose element order matches Ts....

Definition at line 110 of file context.hpp.


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