27 template <
class... Types>
53 base_t & as_base() noexcept
61 base_t
const & as_base() const noexcept
70 template <
class... UTypes>
71 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...)
75 template <
class... UTypes>
76 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
80 template <
class... UTypes>
81 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...)
85 template <
class... UTypes>
86 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
96 template <
class... UTypes>
97 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...)
101 template <
class... UTypes>
102 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
107 template <
class... UTypes>
108 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...)
113 template <
class... UTypes>
114 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
125 template <
class... UTypes>
126 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...)
130 template <
class... UTypes>
131 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
136 template <
class... UTypes>
137 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...)
142 template <
class... UTypes>
143 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
154 template <
class... UTypes>
155 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...)
159 template <
class... UTypes>
160 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
165 template <
class... UTypes>
166 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...)
171 template <
class... UTypes>
172 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
181 template <
class... UTypes>
182 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes &> && ...)
186 template <
class... UTypes>
187 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
192 template <
class... UTypes>
193 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes> && ...)
198 template <
class... UTypes>
199 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<Types, UTypes const> && ...)
210 template <
class... UTypes>
211 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...)
216 ((std::get<N>(*
this) = std::get<N>(other)), ...);
223 template <
class... UTypes>
224 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
229 ((std::get<N>(*
this) = std::get<N>(other)), ...);
236 template <
class... UTypes>
237 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...)
242 ((std::get<N>(*
this) = std::get<N>(other)), ...);
249 template <
class... UTypes>
250 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
255 ((std::get<N>(*
this) = std::get<N>(other)), ...);
262 template <
class... UTypes>
263 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...)
268 ((std::get<N>(*
this) = std::get<N>(other)), ...);
275 template <
class... UTypes>
276 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
281 ((std::get<N>(*
this) = std::get<N>(other)), ...);
288 template <
class... UTypes>
289 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...)
294 ((std::get<N>(*
this) = std::get<N>(other)), ...);
301 template <
class... UTypes>
302 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
307 ((std::get<N>(*
this) = std::get<N>(other)), ...);
320 template <
class... UTypes>
321 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...)
326 ((std::get<N>(*
this) = std::get<N>(other)), ...);
333 template <
class... UTypes>
334 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
339 ((std::get<N>(*
this) = std::get<N>(other)), ...);
346 template <
class... UTypes>
347 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...)
352 ((std::get<N>(*
this) = std::get<N>(other)), ...);
359 template <
class... UTypes>
360 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
365 ((std::get<N>(*
this) = std::get<N>(other)), ...);
372 template <
class... UTypes>
373 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...)
378 ((std::get<N>(*
this) = std::get<N>(other)), ...);
385 template <
class... UTypes>
386 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
391 ((std::get<N>(*
this) = std::get<N>(other)), ...);
398 template <
class... UTypes>
399 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...)
404 ((std::get<N>(*
this) = std::get<N>(other)), ...);
411 template <
class... UTypes>
412 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
417 ((std::get<N>(*
this) = std::get<N>(other)), ...);
430 template <
class... UTypes>
431 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...)
436 ((std::get<N>(*
this) = std::get<N>(other)), ...);
443 template <
class... UTypes>
444 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
449 ((std::get<N>(*
this) = std::get<N>(other)), ...);
456 template <
class... UTypes>
457 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...)
462 ((std::get<N>(*
this) = std::get<N>(other)), ...);
469 template <
class... UTypes>
470 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
475 ((std::get<N>(*
this) = std::get<N>(other)), ...);
482 template <
class... UTypes>
483 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...)
488 ((std::get<N>(*
this) = std::get<N>(other)), ...);
495 template <
class... UTypes>
496 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
501 ((std::get<N>(*
this) = std::get<N>(other)), ...);
508 template <
class... UTypes>
509 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...)
514 ((std::get<N>(*
this) = std::get<N>(other)), ...);
521 template <
class... UTypes>
522 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
527 ((std::get<N>(*
this) = std::get<N>(other)), ...);
540 template <
class... UTypes>
541 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes &> && ...)
546 ((std::get<N>(*
this) = std::get<N>(other)), ...);
553 template <
class... UTypes>
554 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
559 ((std::get<N>(*
this) = std::get<N>(other)), ...);
566 template <
class... UTypes>
567 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes> && ...)
572 ((std::get<N>(*
this) = std::get<N>(other)), ...);
579 template <
class... UTypes>
580 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types, UTypes const> && ...)
585 ((std::get<N>(*
this) = std::get<N>(other)), ...);
592 template <
class... UTypes>
593 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes &> && ...)
598 ((std::get<N>(*
this) = std::get<N>(other)), ...);
605 template <
class... UTypes>
606 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
611 ((std::get<N>(*
this) = std::get<N>(other)), ...);
618 template <
class... UTypes>
619 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes> && ...)
624 ((std::get<N>(*
this) = std::get<N>(other)), ...);
631 template <
class... UTypes>
632 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_assignable_v<Types const, UTypes const> && ...)
637 ((std::get<N>(*
this) = std::get<N>(other)), ...);
650 template <
class... UTypes>
651 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types &> && ...)
657 template <
class... UTypes>
658 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types const> && ...)
664 template <
class... UTypes>
665 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types> && ...)
671 template <
class... UTypes>
672 requires (
sizeof...(Types) ==
sizeof...(UTypes)) && (std::is_constructible_v<UTypes, Types const> && ...)
689 template <
class... UTypes>
694 static_assert((std::equality_comparable_with<Types, UTypes> && ...));
695 return lhs.as_base() == rhs.as_base();
704 template <
class... UTypes>
706 &&
requires {
requires (std::equality_comparable_with<Types, UTypes> && ...); }
709 return lhs.as_base() != rhs.as_base();
718 template <
class... UTypes>
719 requires (
sizeof...(Types) ==
sizeof...(UTypes))
723 return lhs.as_base() < rhs.as_base();
732 template <
class... UTypes>
733 requires (
sizeof...(Types) ==
sizeof...(UTypes))
737 return lhs.as_base() <= rhs.as_base();
746 template <
class... UTypes>
747 requires (
sizeof...(Types) ==
sizeof...(UTypes))
751 return lhs.as_base() > rhs.as_base();
760 template <
class... UTypes>
761 requires (
sizeof...(Types) ==
sizeof...(UTypes))
765 return lhs.as_base() >= rhs.as_base();
768 #ifdef __cpp_lib_three_way_comparison
776 template <
class... UTypes>
777 requires (
sizeof...(Types) ==
sizeof...(UTypes))
778 &&
requires {
requires (std::three_way_comparable_with<Types, UTypes> && ...); }
781 return lhs.as_base() <=> rhs.as_base();
795 template <
class... UTypes>
796 requires (
sizeof...(Types) ==
sizeof...(UTypes))
797 &&
requires {
requires (std::equality_comparable_with<Types, UTypes> && ...); }
800 return lhs.as_base() == rhs;
809 template <
class... UTypes>
810 requires (
sizeof...(Types) ==
sizeof...(UTypes))
811 &&
requires {
requires (std::equality_comparable_with<Types, UTypes> && ...); }
814 return lhs.as_base() != rhs;
823 template <
class... UTypes>
824 requires (
sizeof...(Types) ==
sizeof...(UTypes))
828 return lhs.as_base() < rhs;
837 template <
class... UTypes>
838 requires (
sizeof...(Types) ==
sizeof...(UTypes))
842 return lhs.as_base() <= rhs;
851 template <
class... UTypes>
852 requires (
sizeof...(Types) ==
sizeof...(UTypes))
856 return lhs.as_base() > rhs;
865 template <
class... UTypes>
866 requires (
sizeof...(Types) ==
sizeof...(UTypes))
870 return lhs.as_base() >= rhs;
873 #ifdef __cpp_lib_three_way_comparison
881 template <
class... UTypes>
882 requires (
sizeof...(Types) ==
sizeof...(UTypes))
883 &&
requires {
requires (std::three_way_comparable_with<Types, UTypes> && ...); }
886 return lhs.as_base() <=> rhs;
893 template <
class... UTypes>
902 template <
typename... args>
903 struct tuple_size<
seqan3::
common_tuple<args...>> :
public tuple_size<std::tuple<args...>>
906 template <
size_t index,
typename... args>
907 struct tuple_element<index,
seqan3::
common_tuple<args...>> :
public tuple_element<index, std::tuple<args...>>
910 template <
class... Ts,
class... Us>
917 template <
class... Ts,
class... Us>
924 template <
class... Ts,
class... Us>
931 template <
class... Ts,
class... Us,
template <
class>
class TQual,
template <
class>
class UQual>
938 template <
class... Ts,
class... Us,
template <
class>
class TQual,
template <
class>
class UQual>
945 template <
class... Ts,
class... Us,
template <
class>
class TQual,
template <
class>
class UQual>
956 return std::get<i>(
static_cast<std::tuple<types...
> &>(t));
964 return std::get<i>(
static_cast<std::tuple<types...
> const &>(t));
971 return std::get<i>(
static_cast<std::tuple<types...
> &&>(std::move(t)));
979 return std::get<i>(
static_cast<std::tuple<types...
> const &&>(std::move(t)));
982 template <
typename type,
typename... types>
984 requires (seqan3::pack_traits::count<type, types...> == 1)
986 return std::get<type>(
static_cast<std::tuple<types...
> &>(t));
989 template <
typename type,
typename... types>
991 requires (seqan3::pack_traits::count<type, types...> == 1)
993 return std::get<type>(
static_cast<std::tuple<types...
> const &>(t));
996 template <
typename type,
typename... types>
998 requires (seqan3::pack_traits::count<type, types...> == 1)
1000 return std::get<type>(
static_cast<std::tuple<types...
> &&>(std::move(t)));
1003 template <
typename type,
typename... types>
1005 requires (seqan3::pack_traits::count<type, types...> == 1)
1007 return std::get<type>(
static_cast<std::tuple<types...
> const &&>(std::move(t)));
A std::tuple implementation that incorporates most changes from C++23's standard library.
Definition: common_tuple.hpp:29
common_tuple & operator=(common_tuple const &)=default
Defaulted.
constexpr friend bool operator>(common_tuple const &lhs, common_tuple< UTypes... > const &rhs)
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:744
requires(sizeof...(Types)==sizeof...(UTypes)) &&requires
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:690
constexpr friend bool operator<(common_tuple const &lhs, common_tuple< UTypes... > const &rhs)
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:718
common_tuple()=default
Defaulted.
constexpr friend auto operator<=>(common_tuple const &lhs, common_tuple< UTypes... > const &rhs)
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:772
constexpr friend bool operator==(common_tuple const &lhs, common_tuple< UTypes... > const &rhs)
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:691
common_tuple(common_tuple const &)=default
Defaulted.
constexpr friend bool operator>=(common_tuple const &lhs, common_tuple< UTypes... > const &rhs)
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:757
requires(sizeof...(Types)==sizeof...(UTypes)) &&(std
Constructs from arguments.
Definition: common_tuple.hpp:71
constexpr friend bool operator!=(common_tuple const &lhs, common_tuple< UTypes... > const &rhs)
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:705
constexpr friend bool operator<=(common_tuple const &lhs, common_tuple< UTypes... > const &rhs)
Checks whether lhs and rhs are equal.
Definition: common_tuple.hpp:731
Provides seqan3::common_pair.
requires requires
The rank_type of the semi-alphabet; defined as the return type of seqan3::to_rank....
Definition: alphabet/concept.hpp:164
T make_from_tuple(T... args)
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
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:415
common_tuple(UTypes...) -> common_tuple< UTypes... >
Class template argument deduction guide.
SeqAn specific customisations in the standard namespace.
A std::pair implementation that incorporates most changes from C++23's standard library.
Definition: common_pair.hpp:28
Provides various traits for template packs.