21#define SEQAN_NOT_POD "If you are not going to insert a POD type, use std::tuple instead."
24template <
typename... types>
49 static_assert(std::is_standard_layout_v<type0> && std::is_trivial_v<type0>,
SEQAN_NOT_POD);
114template <
typename type0>
117 static_assert(std::is_standard_layout_v<type0> && std::is_trivial_v<type0>,
SEQAN_NOT_POD);
170template <
typename... types>
183 requires (
i <
sizeof...(types))
185 if constexpr (
i == 0)
195 requires (
i <
sizeof...(types))
197 if constexpr (
i == 0)
208 requires (
i <
sizeof...(types))
210 if constexpr (
i == 0)
211 return std::move(t._head);
220 requires (
i <
sizeof...(types))
222 if constexpr (
i == 0)
223 return std::move(t._head);
239template <
typename type,
typename...
arg_types>
248template <
typename type,
typename...
arg_types>
257template <
typename type,
typename...
arg_types>
266template <
typename type,
typename...
arg_types>
282 requires (i <
sizeof...(types))
289 requires (i <
sizeof...(types))
296 requires (i <
sizeof...(types))
303 requires (i <
sizeof...(types))
308template <
typename type,
typename... types>
315template <
typename type,
typename... types>
322template <
typename type,
typename... types>
329template <
typename type,
typename... types>
342template <
std::size_t i,
template <
typename...>
typename t,
typename... types>
344struct tuple_element<i, t<types...>>
355template <
template <
typename...>
typename t,
typename... types>
A "pretty printer" for most SeqAn data structures and related types.
Definition debug_stream_type.hpp:79
constexpr ptrdiff_t find
Get the index of the first occurrence of a type in a pack.
Definition type_pack/traits.hpp:179
constexpr ptrdiff_t count
Count the occurrences of a type in a pack.
Definition type_pack/traits.hpp:161
typename decltype(detail::at< idx, pack_t... >())::type at
Return the type at given index from the type pack.
Definition type_pack/traits.hpp:245
The main SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
constexpr auto const & get(configuration< configs_t... > const &config) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:412
SeqAn specific customisations in the standard namespace.
constexpr bool operator>=(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than or equal to rhs.
Definition pod_tuple.hpp:103
constexpr bool operator!=(pod_tuple const &rhs) const noexcept
Checks whether *this is not equal to rhs.
Definition pod_tuple.hpp:79
constexpr bool operator<=(pod_tuple const &rhs) const noexcept
Checks whether *this is less than or equal to rhs.
Definition pod_tuple.hpp:97
constexpr bool operator==(pod_tuple const &rhs) const noexcept
Checks whether *this is equal to rhs.
Definition pod_tuple.hpp:73
constexpr bool operator<(pod_tuple const &rhs) const noexcept
Checks whether *this is less than rhs.
Definition pod_tuple.hpp:85
constexpr bool operator>(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than rhs.
Definition pod_tuple.hpp:91
constexpr bool operator<=(pod_tuple const &rhs) const noexcept
Checks whether *this is less than or equal to rhs.
Definition pod_tuple.hpp:153
constexpr bool operator>(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than rhs.
Definition pod_tuple.hpp:147
constexpr bool operator>=(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than or equal to rhs.
Definition pod_tuple.hpp:159
constexpr bool operator!=(pod_tuple const &rhs) const noexcept
Checks whether *this is not equal to rhs.
Definition pod_tuple.hpp:135
constexpr bool operator==(pod_tuple const &rhs) const noexcept
Checks whether *this is equal to rhs.
Definition pod_tuple.hpp:129
constexpr bool operator<(pod_tuple const &rhs) const noexcept
Checks whether *this is less than rhs.
Definition pod_tuple.hpp:141
Definition pod_tuple.hpp:26
constexpr auto && get(seqan3::pod_tuple< types... > &&t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:207
constexpr auto & get(seqan3::pod_tuple< arg_types... > &t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:240
constexpr auto const & get(seqan3::pod_tuple< types... > const &t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:194
constexpr auto & get(seqan3::pod_tuple< types... > &t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:182
constexpr auto const && get(seqan3::pod_tuple< types... > const &&t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:219
constexpr auto const && get(seqan3::pod_tuple< arg_types... > const &&t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:267
constexpr auto && get(seqan3::pod_tuple< arg_types... > &&t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:258
pod_tuple(types &&...) -> pod_tuple< types... >
User defined deduction guide enables easy use.
constexpr auto const & get(seqan3::pod_tuple< arg_types... > const &t) noexcept
The same as std::get on a std::tuple.
Definition pod_tuple.hpp:249
seqan3::pack_traits::at< i, types... > type
Element type.
Definition pod_tuple.hpp:347
Provides various traits for template packs.