16 #include <type_traits> 25 #define SEQAN_NOT_POD "If you are not going to insert a POD type, use std::tuple instead." 29 template <
typename ...types>
54 template <
typename type0,
typename ...types>
57 static_assert(std::is_pod_v<type0>, SEQAN_NOT_POD);
69 constexpr
bool operator==(
pod_tuple const & rhs)
const noexcept
111 template <
typename type0>
114 static_assert(std::is_pod_v<type0>, SEQAN_NOT_POD);
125 constexpr
bool operator==(
pod_tuple const & rhs)
const noexcept
128 return _head == rhs._head;
134 return _head != rhs._head;
140 return _head < rhs._head;
146 return _head > rhs._head;
152 return _head <= rhs._head;
158 return _head >= rhs._head;
167 template <
typename ...types>
181 requires i <
sizeof...(types)
184 if constexpr (i == 0)
195 requires i <
sizeof...(types)
198 if constexpr (i == 0)
210 requires i <
sizeof...(types)
213 if constexpr (i == 0)
224 requires i <
sizeof...(types)
227 if constexpr (i == 0)
242 template <
typename type,
typename ...arg_types>
247 requires (seqan3::pack_traits::count<type, arg_types...> == 1)
255 template <
typename type,
typename ...arg_types>
258 requires (seqan3::pack_traits::count<type, arg_types...> == 1)
266 template <
typename type,
typename ...arg_types>
269 requires (seqan3::pack_traits::count<type, arg_types...> == 1)
277 template <
typename type,
typename ...arg_types>
280 requires (seqan3::pack_traits::count<type, arg_types...> == 1)
295 requires i <
sizeof...(types)
297 return seqan3::get<i>(t);
302 requires i <
sizeof...(types)
304 return seqan3::get<i>(t);
309 requires i <
sizeof...(types)
316 requires i <
sizeof...(types)
321 template <
typename type,
typename ...types>
323 requires (seqan3::pack_traits::count<type, types...> == 1)
325 return seqan3::get<type>(t);
328 template <
typename type,
typename ...types>
330 requires (seqan3::pack_traits::count<type, types...> == 1)
332 return seqan3::get<type>(t);
335 template <
typename type,
typename ...types>
337 requires (seqan3::pack_traits::count<type, types...> == 1)
342 template <
typename type,
typename ...types>
344 requires (seqan3::pack_traits::count<type, types...> == 1)
355 template <
std::size_t i,
template <
typename ...>
typename t,
typename ...types>
356 requires i <
sizeof...(types) &&
358 struct tuple_element<i, t<types...>>
368 template <
template <
typename ...>
typename t,
typename ...types>
370 struct tuple_size<t<types...>> :
constexpr bool operator>(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than rhs.
Definition: pod_tuple.hpp:144
typename decltype(detail::at< idx, pack_t... >())::type at
Return the type at given index from the type pack.
Definition: traits.hpp:221
constexpr bool operator<(pod_tuple const &rhs) const noexcept
Checks whether *this is less than rhs.
Definition: pod_tuple.hpp:82
constexpr bool operator<(pod_tuple const &rhs) const noexcept
Checks whether *this is less than rhs.
Definition: pod_tuple.hpp:138
constexpr bool operator>(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than rhs.
Definition: pod_tuple.hpp:88
constexpr bool operator>=(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than or equal to rhs.
Definition: pod_tuple.hpp:100
Provides traits for seqan3::type_list.
SeqAn specific customisations in the standard namespace.
constexpr auto const & get(configuration< configs_t... > const &config) noexcept
Definition: configuration.hpp:576
The main SeqAn3 namespace.
constexpr ptrdiff_t find
Get the index of the first occurrence of a type in a pack.
Definition: traits.hpp:152
pod_tuple(types &&...) -> pod_tuple< types... >
User defined deduction guide enables easy use.
auto const move
A view that turns lvalue-references into rvalue-references.
Definition: move.hpp:68
constexpr bool operator<=(pod_tuple const &rhs) const noexcept
Checks whether *this is less than or equal to rhs.
Definition: pod_tuple.hpp:94
constexpr bool operator!=(pod_tuple const &rhs) const noexcept
Checks whether *this is not equal to rhs.
Definition: pod_tuple.hpp:76
constexpr bool operator!=(pod_tuple const &rhs) const noexcept
Checks whether *this is not equal to rhs.
Definition: pod_tuple.hpp:132
cond
Definition: pod_tuple.hpp:30
constexpr bool operator<=(pod_tuple const &rhs) const noexcept
Checks whether *this is less than or equal to rhs.
Definition: pod_tuple.hpp:150
constexpr bool operator>=(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than or equal to rhs.
Definition: pod_tuple.hpp:156