3#include <ossia/detail/config.hpp>
7#if defined(__clang__) && defined(__OPTIMIZE__)
8#define OSSIA_MAXIMUM_INLINE OSSIA_INLINE __attribute__((flatten))
10#define OSSIA_MAXIMUM_INLINE OSSIA_INLINE
13#if __has_include(<boost/variant2.hpp>)
14#include <boost/variant2.hpp>
15namespace ossia_variant_alias = boost::variant2;
17#include <mpark/variant.hpp>
18namespace ossia_variant_alias = mpark;
23using monostate = ossia_variant_alias::monostate;
24#if __cpp_concepts >= 201907L
26concept nothrow_move_constructible = std::is_nothrow_move_constructible_v<T>;
28template <nothrow_move_constructible... Args>
30template <
typename... Args>
32using variant = ossia_variant_alias::variant<Args...>;
34template <
typename... Args>
35using slow_variant = ossia_variant_alias::variant<Args...>;
37template <std::
size_t N,
typename T>
38using variant_element = ossia_variant_alias::variant_alternative<N, T>;
39template <std::
size_t N,
typename T>
40using variant_element_t = ossia_variant_alias::variant_alternative_t<N, T>;
42using ossia_variant_alias::operator==;
43using ossia_variant_alias::operator!=;
44using ossia_variant_alias::operator<;
45using ossia_variant_alias::operator>;
46using ossia_variant_alias::operator<=;
47using ossia_variant_alias::operator>=;
51using ossia_variant_alias::get;
52using ossia_variant_alias::get_if;
53using ossia_variant_alias::in_place_index;
54using ossia_variant_alias::in_place_type;
55using ossia_variant_alias::visit;