Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
Data Structures | Namespaces | Typedefs | Functions
variant.hpp File Reference
#include <variant>
#include <compare>
#include <ext/ostream>
#include <extensions/typeindex.h>
#include <extensions/type_traits.hpp>
#include <extensions/concepts.hpp>
Include dependency graph for variant.hpp:

Go to the source code of this file.

Data Structures

struct  ext::variant_builder_impl< Res, Ts >
 Class to help building of the variant type or, in case variant is requested to be constructed from single type or more types but all the same, that concrete type. More...
 
struct  ext::variant_builder_impl< std::variant< ResTs ... > >
 Recursion ending specialisation of the helper class to build the variant type. The last type T is added as last type to the variant parameters. More...
 
struct  ext::variant_builder_impl< std::variant< ResTs ... >, T, Ts ... >
 Recursive step of class to build the variant type. More...
 
struct  ext::variant_builder_start< T, Ts >
 
class  ext::variant< Ts >
 Implementation of the variant class allowing to store any type of those listed in the template parameters. Void type is allowed, multiply specified same type is irrelevant. More...
 
struct  std::variant_size< ext::variant< Types ... > >
 
struct  std::variant_alternative< Np, ext::variant< Types ... > >
 

Namespaces

namespace  ext
 
namespace  std
 

Typedefs

template<class ... Ts>
using ext::std_variant = typename variant_builder_start< Ts ... >::std_variant
 

Functions

template<class Visitor , class... Variants>
constexpr auto ext::visit (Visitor &&vis, Variants &&... vars)