aws-crt-cpp
C++ wrapper around the aws-c-* libraries. Provides Cross-Platform Transport Protocols and SSL/TLS implementations for C++.
Classes | Public Types | Public Member Functions | Static Public Attributes | List of all members
Aws::Crt::VariantDetail::VariantImpl< Ts > Class Template Reference

#include <Variant.h>

Public Types

using FirstAlternative = typename ThisVariantAlternative< 0 >::type
 
using IndexT = VariantDetail::Index::VariantIndex
 
template<std::size_t Index>
using RawAlternativePointerT = typename std::add_pointer< typename ThisVariantAlternative< Index >::type >::type
 
template<std::size_t Index>
using ConstRawAlternativePointerT = typename std::add_pointer< typename std::add_const< typename ThisVariantAlternative< Index >::type >::type >::type
 

Public Member Functions

 VariantImpl () noexcept(isFirstAlternativeNothrowDefaultConstructible)
 
 VariantImpl (const VariantImpl &other)
 
 VariantImpl (VariantImpl &&other)
 
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
 VariantImpl (const T &val) noexcept( std::is_nothrow_constructible< typename std::decay< T >::type, decltype(val)>::value)
 
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
 VariantImpl (T &&val) noexcept( std::is_nothrow_constructible< typename std::decay< T >::type, decltype(val)>::value)
 
template<typename T , typename... Args>
 VariantImpl (Aws::Crt::InPlaceTypeT< T >, Args &&...args)
 
VariantImploperator= (const VariantImpl &other)
 
VariantImploperator= (VariantImpl &&other)
 
template<typename T , typename... Args, EnableIfOtherIsThisVariantAlternative< T > = 1>
T & emplace (Args &&...args)
 
template<std::size_t Index, typename... Args>
auto emplace (Args &&...args) -> typename ThisVariantAlternative< Index >::type &
 
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
bool holds_alternative () const
 
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
T & get ()
 
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
T * get_if ()
 
template<std::size_t Index>
auto get () -> typename ThisVariantAlternative< Index >::type &
 
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
const T & get () const
 
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
const T * get_if () const
 
template<std::size_t Index>
auto get () const -> const typename ThisVariantAlternative< Index >::type &
 
template<std::size_t Index>
auto get_if () -> RawAlternativePointerT< Index >
 
template<std::size_t Index>
auto get_if () const -> ConstRawAlternativePointerT< Index >
 
std::size_t index () const
 
 ~VariantImpl ()
 
template<typename VisitorT >
void Visit (VisitorT &&visitor)
 

Static Public Attributes

static constexpr bool isFirstAlternativeNothrowDefaultConstructible
 
static constexpr bool isFirstAlternativeDefaultConstructible
 
static constexpr std::size_t AlternativeCount = sizeof...(Ts)
 

Member Typedef Documentation

template<typename... Ts>
template<std::size_t Index>
using Aws::Crt::VariantDetail::VariantImpl< Ts >::ConstRawAlternativePointerT = typename std::add_pointer< typename std::add_const<typename ThisVariantAlternative<Index>::type>::type>::type
template<typename... Ts>
using Aws::Crt::VariantDetail::VariantImpl< Ts >::FirstAlternative = typename ThisVariantAlternative<0>::type
template<typename... Ts>
template<std::size_t Index>
using Aws::Crt::VariantDetail::VariantImpl< Ts >::RawAlternativePointerT = typename std::add_pointer<typename ThisVariantAlternative<Index>::type>::type

Constructor & Destructor Documentation

template<typename... Ts>
Aws::Crt::VariantDetail::VariantImpl< Ts >::VariantImpl ( )
inlinenoexcept
template<typename... Ts>
Aws::Crt::VariantDetail::VariantImpl< Ts >::VariantImpl ( const VariantImpl< Ts > &  other)
inline
template<typename... Ts>
Aws::Crt::VariantDetail::VariantImpl< Ts >::VariantImpl ( VariantImpl< Ts > &&  other)
inline
template<typename... Ts>
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
Aws::Crt::VariantDetail::VariantImpl< Ts >::VariantImpl ( const T &  val)
inlinenoexcept
template<typename... Ts>
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
Aws::Crt::VariantDetail::VariantImpl< Ts >::VariantImpl ( T &&  val)
inlinenoexcept
template<typename... Ts>
template<typename T , typename... Args>
Aws::Crt::VariantDetail::VariantImpl< Ts >::VariantImpl ( Aws::Crt::InPlaceTypeT< T >  ,
Args &&...  args 
)
inlineexplicit
template<typename... Ts>
Aws::Crt::VariantDetail::VariantImpl< Ts >::~VariantImpl ( )
inline

Member Function Documentation

template<typename... Ts>
template<typename T , typename... Args, EnableIfOtherIsThisVariantAlternative< T > = 1>
T& Aws::Crt::VariantDetail::VariantImpl< Ts >::emplace ( Args &&...  args)
inline
template<typename... Ts>
template<std::size_t Index, typename... Args>
auto Aws::Crt::VariantDetail::VariantImpl< Ts >::emplace ( Args &&...  args) -> typename ThisVariantAlternative<Index>::type &
inline
template<typename... Ts>
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
T& Aws::Crt::VariantDetail::VariantImpl< Ts >::get ( )
inline
template<typename... Ts>
template<std::size_t Index>
auto Aws::Crt::VariantDetail::VariantImpl< Ts >::get ( ) -> typename ThisVariantAlternative<Index>::type &
inline
template<typename... Ts>
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
const T& Aws::Crt::VariantDetail::VariantImpl< Ts >::get ( ) const
inline
template<typename... Ts>
template<std::size_t Index>
auto Aws::Crt::VariantDetail::VariantImpl< Ts >::get ( ) const -> const typename ThisVariantAlternative<Index>::type &
inline
template<typename... Ts>
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
T* Aws::Crt::VariantDetail::VariantImpl< Ts >::get_if ( )
inline
template<typename... Ts>
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
const T* Aws::Crt::VariantDetail::VariantImpl< Ts >::get_if ( ) const
inline
template<typename... Ts>
template<std::size_t Index>
auto Aws::Crt::VariantDetail::VariantImpl< Ts >::get_if ( ) -> RawAlternativePointerT<Index>
inline
template<typename... Ts>
template<std::size_t Index>
auto Aws::Crt::VariantDetail::VariantImpl< Ts >::get_if ( ) const -> ConstRawAlternativePointerT<Index>
inline
template<typename... Ts>
template<typename T , EnableIfOtherIsThisVariantAlternative< T > = 1>
bool Aws::Crt::VariantDetail::VariantImpl< Ts >::holds_alternative ( ) const
inline
template<typename... Ts>
std::size_t Aws::Crt::VariantDetail::VariantImpl< Ts >::index ( ) const
inline
template<typename... Ts>
VariantImpl& Aws::Crt::VariantDetail::VariantImpl< Ts >::operator= ( const VariantImpl< Ts > &  other)
inline
template<typename... Ts>
VariantImpl& Aws::Crt::VariantDetail::VariantImpl< Ts >::operator= ( VariantImpl< Ts > &&  other)
inline
template<typename... Ts>
template<typename VisitorT >
void Aws::Crt::VariantDetail::VariantImpl< Ts >::Visit ( VisitorT &&  visitor)
inline

Member Data Documentation

template<typename... Ts>
constexpr std::size_t Aws::Crt::VariantDetail::VariantImpl< Ts >::AlternativeCount = sizeof...(Ts)
static
template<typename... Ts>
constexpr bool Aws::Crt::VariantDetail::VariantImpl< Ts >::isFirstAlternativeDefaultConstructible
static
Initial value:
=
std::is_nothrow_constructible<FirstAlternative>::value
template<typename... Ts>
constexpr bool Aws::Crt::VariantDetail::VariantImpl< Ts >::isFirstAlternativeNothrowDefaultConstructible
static
Initial value:
=
std::is_nothrow_default_constructible<FirstAlternative>::value

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