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>
13 namespace ossia_variant_alias = boost::variant2;
15 #include <mpark/variant.hpp>
16 namespace ossia_variant_alias = mpark;
21 using monostate = ossia_variant_alias::monostate;
22 #if __cpp_concepts >= 201907L
24 concept nothrow_move_constructible = std::is_nothrow_move_constructible_v<T>;
26 template <nothrow_move_constructible... Args>
28 template <
typename... Args>
30 using variant = ossia_variant_alias::variant<Args...>;
32 template <
typename... Args>
33 using slow_variant = ossia_variant_alias::variant<Args...>;
35 template <std::
size_t N,
typename T>
36 using variant_element = ossia_variant_alias::variant_alternative<N, T>;
37 template <std::
size_t N,
typename T>
38 using variant_element_t = ossia_variant_alias::variant_alternative_t<N, T>;
40 using ossia_variant_alias::operator==;
41 using ossia_variant_alias::operator!=;
42 using ossia_variant_alias::operator<;
43 using ossia_variant_alias::operator>;
44 using ossia_variant_alias::operator<=;
45 using ossia_variant_alias::operator>=;
49 using ossia_variant_alias::get;
50 using ossia_variant_alias::get_if;
51 using ossia_variant_alias::in_place_index;
52 using ossia_variant_alias::in_place_type;
53 using ossia_variant_alias::visit;