 |
SeqAn3
3.0.1
The Modern C++ library for sequence analysis.
|
|
Go to the documentation of this file.
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>
168 pod_tuple(types && ...) -> pod_tuple<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 not equal to rhs.
Definition: pod_tuple.hpp:76
constexpr const auto & get(seqan3::pod_tuple< arg_types... > const &t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:256
constexpr bool operator<(pod_tuple const &rhs) const noexcept
Checks whether *this is less than rhs.
Definition: pod_tuple.hpp:82
constexpr const auto && get(seqan3::pod_tuple< arg_types... > const &&t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:278
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 not equal to rhs.
Definition: pod_tuple.hpp:132
constexpr ptrdiff_t find
Get the index of the first occurrence of a type in a pack.
Definition: traits.hpp:152
constexpr const auto & get(seqan3::pod_tuple< types... > const &t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:193
const auto 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 greater than or equal to rhs.
Definition: pod_tuple.hpp:100
constexpr bool operator>(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than rhs.
Definition: pod_tuple.hpp:144
const auto get
A view calling std::get on each element in a range.
Definition: get.hpp:65
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 auto && get(seqan3::pod_tuple< types... > &&t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:208
constexpr bool operator>=(pod_tuple const &rhs) const noexcept
Checks whether *this is greater than or equal to rhs.
Definition: pod_tuple.hpp:156
constexpr auto & get(seqan3::pod_tuple< arg_types... > &t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:245
constexpr bool operator<(pod_tuple const &rhs) const noexcept
Checks whether *this is less than rhs.
Definition: pod_tuple.hpp:138
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:36
constexpr auto && get(seqan3::pod_tuple< arg_types... > &&t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:267
constexpr auto & get(seqan3::pod_tuple< types... > &t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:179
SeqAn specific customisations in the standard namespace.
Provides traits for seqan3::type_list.
typename decltype(detail::at< idx, pack_t... >())::type at
Return the type at given index from the type pack.
Definition: traits.hpp:221
constexpr const auto & 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:576
constexpr bool operator<=(pod_tuple const &rhs) const noexcept
Checks whether *this is less than or equal to rhs.
Definition: pod_tuple.hpp:94
cond
Definition: pod_tuple.hpp:30
constexpr const auto && get(seqan3::pod_tuple< types... > const &&t) noexcept
The same as std::get on an std::tuple.
Definition: pod_tuple.hpp:222