Foundation
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Private Member Functions | List of all members
Foundation::Core::Variant< Args > Struct Template Reference

std::variant with C++23 visit() behavior and convenience Get()/GetIf() methods. Also read upon https://bitbashing.io/std-visit.html - which is not used here. More...

#include <Container.hpp>

Inheritance diagram for Foundation::Core::Variant< Args >:

Public Types

using Base = std::variant< Args... >
 

Public Member Functions

template<typename... Visitors>
auto Visit (Visitors &&... visitors) noexcept
 
template<typename... Visitors>
auto Visit (Visitors &&... visitors) const noexcept
 
template<typename... Visitors>
auto VisitDefault (Visitors &&... visitors) noexcept
 
template<typename... Visitors>
auto VisitDefault (Visitors &&... visitors) const noexcept
 
template<typename T >
constexpr T & Get ()
 
template<typename T >
constexpr const T & Get () const
 
template<typename T >
constexpr T * GetIf ()
 
template<typename T >
constexpr const T * GetIf () const
 

Static Private Member Functions

template<typename R , std::size_t I = 0, typename Vis , typename Var >
static R VisitImpl (Vis &vis, Var &var) noexcept
 

Detailed Description

template<typename... Args>
struct Foundation::Core::Variant< Args >

std::variant with C++23 visit() behavior and convenience Get()/GetIf() methods. Also read upon https://bitbashing.io/std-visit.html - which is not used here.

Member Typedef Documentation

◆ Base

template<typename... Args>
using Foundation::Core::Variant< Args >::Base = std::variant<Args...>

Member Function Documentation

◆ Get() [1/2]

template<typename... Args>
template<typename T >
constexpr T & Foundation::Core::Variant< Args >::Get ( )
inlineconstexpr

◆ Get() [2/2]

template<typename... Args>
template<typename T >
constexpr const T & Foundation::Core::Variant< Args >::Get ( ) const
inlineconstexpr

◆ GetIf() [1/2]

template<typename... Args>
template<typename T >
constexpr T * Foundation::Core::Variant< Args >::GetIf ( )
inlineconstexpr

◆ GetIf() [2/2]

template<typename... Args>
template<typename T >
constexpr const T * Foundation::Core::Variant< Args >::GetIf ( ) const
inlineconstexpr

◆ Visit() [1/2]

template<typename... Args>
template<typename... Visitors>
auto Foundation::Core::Variant< Args >::Visit ( Visitors &&...  visitors) const
inlinenoexcept

◆ Visit() [2/2]

template<typename... Args>
template<typename... Visitors>
auto Foundation::Core::Variant< Args >::Visit ( Visitors &&...  visitors)
inlinenoexcept

◆ VisitDefault() [1/2]

template<typename... Args>
template<typename... Visitors>
auto Foundation::Core::Variant< Args >::VisitDefault ( Visitors &&...  visitors) const
inlinenoexcept

◆ VisitDefault() [2/2]

template<typename... Args>
template<typename... Visitors>
auto Foundation::Core::Variant< Args >::VisitDefault ( Visitors &&...  visitors)
inlinenoexcept

◆ VisitImpl()

template<typename... Args>
template<typename R , std::size_t I = 0, typename Vis , typename Var >
static R Foundation::Core::Variant< Args >::VisitImpl ( Vis &  vis,
Var &  var 
)
inlinestaticprivatenoexcept

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