3#include <ossia/detail/config.hpp>
6#define OSSIA_MAXIMUM_INLINE OSSIA_INLINE __attribute__((flatten))
8#define OSSIA_MAXIMUM_INLINE OSSIA_INLINE
11#if __has_include(<boost/variant2.hpp>)
12#include <boost/variant2.hpp>
13namespace ossia_variant_alias = boost::variant2;
15#include <mpark/variant.hpp>
16namespace ossia_variant_alias = mpark;
21using monostate = ossia_variant_alias::monostate;
22#if __cpp_concepts >= 201907L
24concept nothrow_move_constructible = std::is_nothrow_move_constructible_v<T>;
26template <nothrow_move_constructible... Args>
28template <
typename... Args>
30using variant = ossia_variant_alias::variant<Args...>;
32template <
typename... Args>
33using slow_variant = ossia_variant_alias::variant<Args...>;
35template <std::
size_t N,
typename T>
36using variant_element = ossia_variant_alias::variant_alternative<N, T>;
37template <std::
size_t N,
typename T>
38using variant_element_t = ossia_variant_alias::variant_alternative_t<N, T>;
40using ossia_variant_alias::operator==;
41using ossia_variant_alias::operator!=;
42using ossia_variant_alias::operator<;
43using ossia_variant_alias::operator>;
44using ossia_variant_alias::operator<=;
45using ossia_variant_alias::operator>=;
49using ossia_variant_alias::get;
50using ossia_variant_alias::get_if;
51using ossia_variant_alias::in_place_index;
52using ossia_variant_alias::in_place_type;
53using ossia_variant_alias::visit;