15#ifndef IOX2_BB_VOCABULARY_VARIANT_INTERNAL_HPP
16#define IOX2_BB_VOCABULARY_VARIANT_INTERNAL_HPP
46 static constexpr bool value { std::is_same<TypeToCheck, T>::value
50template <
typename TypeToCheck,
typename T>
52 static constexpr bool value { std::is_same<TypeToCheck, T>::value };
85 reinterpret_cast<T*
>(
ptr)->~
T();
125 return *
reinterpret_cast<const T*
>(
lhs) == *
reinterpret_cast<const T*
>(
rhs);
131template <u
int64_t N,
typename T>
135 reinterpret_cast<T*
>(
ptr)->~
T();
137 IOX2_PANIC(
"Could not call destructor for variant element");
145 IOX2_PANIC(
"Could not call move assignment for variant element");
153 IOX2_PANIC(
"Could not call move constructor for variant element");
161 IOX2_PANIC(
"Could not call copy assignment for variant element");
169 IOX2_PANIC(
"Could not call copy constructor for variant element");
175 return *
reinterpret_cast<const T*
>(
lhs) == *
reinterpret_cast<const T*
>(
rhs);
177 IOX2_PANIC(
"Could not call equality operator for variant element");
#define IOX2_PANIC(message)
calls panic handler and does not return
constexpr bool always_false_v
Helper value to bind a static_assert to a type.
helper struct to perform an emplacement at a predefined index in the constructor of a variant
helper struct to perform an emplacement of a predefined type in in the constructor of a variant
static bool equality(const uint64_t index, const void *const lhs, const void *const rhs) noexcept
static void move(const uint64_t index, void *source, void *const destination) noexcept
static void copyConstructor(const uint64_t index, const void *const source, void *const destination) noexcept
static void copy(const uint64_t index, const void *const source, void *const destination) noexcept
static void moveConstructor(const uint64_t index, void *source, void *const destination) noexcept
static void destructor(const uint64_t index, void *ptr) noexcept
static void copy(const uint64_t index, const void *const source, void *const destination) noexcept
static void move(const uint64_t index, void *source, void *const destination) noexcept
static bool equality(const uint64_t index, const void *const lhs, const void *const rhs) noexcept
static void moveConstructor(const uint64_t index, void *source, void *const destination) noexcept
static void destructor(const uint64_t index, void *ptr) noexcept
static void copyConstructor(const uint64_t index, const void *const source, void *const destination) noexcept
static constexpr bool value
static constexpr uint64_t index
typename get_type_at_index< N+1, Index, Targs... >::type type