join 1.0
lightweight network framework library
Loading...
Searching...
No Matches
variant.hpp File Reference
#include <join/traits.hpp>
#include <join/utils.hpp>
#include <algorithm>
#include <typeinfo>
#include <compare>
#include <tuple>
#include <cstddef>
#include <cstdint>
Include dependency graph for variant.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  join::details::OrderingOf< T >
 comparison category of an alternative. More...
 
struct  join::details::OrderingOf< std::nullptr_t >
 comparison category of nullptr_t. More...
 
struct  join::details::VariantHelper< Ts >
 helper class for variant operations using jump tables for O(1) dispatch. More...
 
class  join::Variant< Ts >
 variant class. More...
 

Namespaces

namespace  join
 
namespace  join::details
 

Typedefs

template<typename... Ts>
using join::details::VariantOrdering = std::common_comparison_category_t<typename OrderingOf<Ts>::type...>
 comparison category of a variant.
 

Functions

template<typename... Ts>
constexpr bool join::operator== (const Variant< Ts... > &lhs, const Variant< Ts... > &rhs)
 compare if equal.
 
template<typename... Ts>
constexpr details::VariantOrdering< Ts... > join::operator<=> (const Variant< Ts... > &lhs, const Variant< Ts... > &rhs)
 three-way compare variants.
 
template<typename... Ts>
void join::swap (Variant< Ts... > &lhs, Variant< Ts... > &rhs) noexcept
 swap two variants.