26template <
class T1,
class T2>
50 template <
class U1,
class U2>
51 requires (std::is_constructible_v<T1, U1 &> && std::is_constructible_v<T2, U2 &>)
55 template <
class U1,
class U2>
56 requires (std::is_constructible_v<T1, U1 const> && std::is_constructible_v<T2, U2 const>)
60 template <
class U1,
class U2>
61 requires (std::is_constructible_v<T1, U1> && std::is_constructible_v<T2, U2>)
65 template <
class U1,
class U2>
66 requires (std::is_constructible_v<T1, U1 const> && std::is_constructible_v<T2, U2 const>)
77 template <
class U1,
class U2>
78 requires (std::is_constructible_v<T1, U1 &> && std::is_constructible_v<T2, U2 &>)
82 template <
class U1,
class U2>
83 requires (std::is_constructible_v<T1, U1 const> && std::is_constructible_v<T2, U2 const>)
87 template <
class U1,
class U2>
88 requires (std::is_constructible_v<T1, U1> && std::is_constructible_v<T2, U2>)
93 template <
class U1,
class U2>
94 requires (std::is_constructible_v<T1, U1 const> && std::is_constructible_v<T2, U2 const>)
105 template <
class U1,
class U2>
106 requires (std::is_constructible_v<T1, U1 &> && std::is_constructible_v<T2, U2 &>)
110 template <
class U1,
class U2>
111 requires (std::is_constructible_v<T1, U1 const> && std::is_constructible_v<T2, U2 const>)
115 template <
class U1,
class U2>
116 requires (std::is_constructible_v<T1, U1> && std::is_constructible_v<T2, U2>)
121 template <
class U1,
class U2>
122 requires (std::is_constructible_v<T1, U1 const> && std::is_constructible_v<T2, U2 const>)
124 base_t(std::forward<U1 const>(other.
first), std::forward<U2 const>(other.
second))
133 template <
class U1,
class U2>
134 requires (std::is_assignable_v<T1, U1 &> && std::is_assignable_v<T2, U2 &>)
142 template <
class U1,
class U2>
143 requires (std::is_assignable_v<T1, U1 const> && std::is_assignable_v<T2, U2 const>)
151 template <
class U1,
class U2>
152 requires (std::is_assignable_v<T1, U1> && std::is_assignable_v<T2, U2>)
160 template <
class U1,
class U2>
161 requires (std::is_assignable_v<T1, U1 const> && std::is_assignable_v<T2, U2 const>)
169 template <
class U1,
class U2>
170 requires (std::is_assignable_v<T1 const, U1 &> && std::is_assignable_v<T2 const, U2 &>)
178 template <
class U1,
class U2>
179 requires (std::is_assignable_v<T1 const, U1 const> && std::is_assignable_v<T2 const, U2 const>)
187 template <
class U1,
class U2>
188 requires (std::is_assignable_v<T1 const, U1> && std::is_assignable_v<T2 const, U2>)
196 template <
class U1,
class U2>
197 requires (std::is_assignable_v<T1 const, U1 const> && std::is_assignable_v<T2 const, U2 const>)
211 template <
class U1,
class U2>
212 requires (std::is_assignable_v<T1, U1 &> && std::is_assignable_v<T2, U2 &>)
220 template <
class U1,
class U2>
221 requires (std::is_assignable_v<T1, U1 const> && std::is_assignable_v<T2, U2 const>)
229 template <
class U1,
class U2>
230 requires (std::is_assignable_v<T1, U1> && std::is_assignable_v<T2, U2>)
238 template <
class U1,
class U2>
239 requires (std::is_assignable_v<T1, U1 const> && std::is_assignable_v<T2, U2 const>)
247 template <
class U1,
class U2>
248 requires (std::is_assignable_v<T1 const, U1 &> && std::is_assignable_v<T2 const, U2 &>)
256 template <
class U1,
class U2>
257 requires (std::is_assignable_v<T1 const, U1 const> && std::is_assignable_v<T2 const, U2 const>)
265 template <
class U1,
class U2>
266 requires (std::is_assignable_v<T1 const, U1> && std::is_assignable_v<T2 const, U2>)
274 template <
class U1,
class U2>
275 requires (std::is_assignable_v<T1 const, U1 const> && std::is_assignable_v<T2 const, U2 const>)
289 template <
class U1,
class U2>
290 requires (std::is_constructible_v<U1, T1 &> && std::is_constructible_v<U2, T2 &>)
296 template <
class U1,
class U2>
297 requires (std::is_constructible_v<U1, T1 const> && std::is_constructible_v<U2, T2 const>)
303 template <
class U1,
class U2>
304 requires (std::is_constructible_v<U1, T1> && std::is_constructible_v<U2, T2>)
310 template <
class U1,
class U2>
311 requires (std::is_constructible_v<U1, T1 const> && std::is_constructible_v<U2, T2 const>)
329 template <
class U1,
class U2>
330 requires (std::equality_comparable_with<T1, U1> && std::equality_comparable_with<T2, U2>)
343 template <
class U1,
class U2>
344 requires (std::equality_comparable_with<T1, U1> && std::equality_comparable_with<T2, U2>)
357 template <
class U1,
class U2>
358 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
371 template <
class U1,
class U2>
372 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
385 template <
class U1,
class U2>
386 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
399 template <
class U1,
class U2>
400 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
406#ifdef __cpp_lib_three_way_comparison
415 template <
class U1,
class U2>
416 requires (std::three_way_comparable_with<T1, U1> && std::three_way_comparable_with<T2, U2>)
418 std::compare_three_way_result_t<U2, T2>>
421 if (
auto cmp = lhs.
first <=> rhs.
first; cmp != 0)
438 template <
class U1,
class U2>
439 requires (std::equality_comparable_with<T1, U1> && std::equality_comparable_with<T2, U2>)
452 template <
class U1,
class U2>
453 requires (std::equality_comparable_with<T1, U1> && std::equality_comparable_with<T2, U2>)
466 template <
class U1,
class U2>
467 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
480 template <
class U1,
class U2>
481 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
494 template <
class U1,
class U2>
495 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
508 template <
class U1,
class U2>
509 requires (std::totally_ordered_with<T1, U1> && std::totally_ordered_with<T2, U2>)
515#ifdef __cpp_lib_three_way_comparison
524 template <
class U1,
class U2>
525 requires (std::three_way_comparable_with<T1, U1> && std::three_way_comparable_with<T2, U2>)
527 std::compare_three_way_result_t<U2, T2>>
530 if (
auto cmp = lhs.
first <=> rhs.
first; cmp != 0)
539template <
class T1,
class T2>
548template <
class T1,
class T2>
549struct tuple_size<
seqan3::
common_pair<T1, T2>> :
public tuple_size<std::pair<T1, T2>>
552template <
size_t index,
class T1,
class T2>
553struct tuple_element<index,
seqan3::
common_pair<T1, T2>> :
public tuple_element<index, std::pair<T1, T2>>
556template <
class T1,
class T2,
class U1,
class U2>
563template <
class T1,
class T2,
class U1,
class U2>
570template <
class T1,
class T2,
class U1,
class U2>
577template <
class T1,
class T2,
class U1,
class U2,
template <
class>
class TQual,
template <
class>
class UQual>
588template <
class T1,
class T2,
class U1,
class U2,
template <
class>
class TQual,
template <
class>
class UQual>
599template <
class T1,
class T2,
class U1,
class U2,
template <
class>
class TQual,
template <
class>
class UQual>
610template <std::
size_t i,
class T1,
class T2>
617template <std::
size_t i,
class T1,
class T2>
618constexpr std::tuple_element_t<i, seqan3::common_pair<T1, T2>>
const &
625template <std::
size_t i,
class T1,
class T2>
632template <std::
size_t i,
class T1,
class T2>
633constexpr std::tuple_element_t<i, seqan3::common_pair<T1, T2>>
const &&
640template <
typename type,
class T1,
class T2>
642 requires (!std::same_as<T1, T2>)
647template <
typename type,
class T1,
class T2>
649 requires (!std::same_as<T1, T2>)
654template <
typename type,
class T1,
class T2>
656 requires (!std::same_as<T1, T2>)
661template <
typename type,
class T1,
class T2>
663 requires (!std::same_as<T1, T2>)
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
common_pair(T1, T2) -> common_pair< T1, T2 >
Class template argument deduction guide.
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
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
constexpr common_pair(std::pair< U1, U2 > const &&other)
Constructs from std::pair.
Definition: common_pair.hpp:123
common_pair(common_pair const &)=default
Defaulted.
constexpr friend std::common_comparison_category_t< std::compare_three_way_result_t< U1, T1 >, std::compare_three_way_result_t< U2, T2 > > operator<=>(common_pair const &lhs, common_pair< U1, U2 > const &rhs)
Performs a three-way comparison between lhs and rhs
Definition: common_pair.hpp:419
constexpr common_pair(U1 const &&first, U2 const &&second)
Constructs from arguments.
Definition: common_pair.hpp:67
constexpr common_pair(U1 &&first, U2 &&second)
Constructs from arguments.
Definition: common_pair.hpp:62
constexpr common_pair(std::pair< U1, U2 > &other)
Constructs from std::pair.
Definition: common_pair.hpp:107
constexpr common_pair(common_pair< U1, U2 > &&other)
Constructs from common_pair.
Definition: common_pair.hpp:89
constexpr common_pair(U1 const &first, U2 const &second)
Constructs from arguments.
Definition: common_pair.hpp:57
constexpr common_pair(U1 &first, U2 &second)
Constructs from arguments.
Definition: common_pair.hpp:52
constexpr common_pair(std::pair< U1, U2 > const &other)
Constructs from std::pair.
Definition: common_pair.hpp:112
constexpr common_pair(std::pair< U1, U2 > &&other)
Constructs from std::pair.
Definition: common_pair.hpp:117
constexpr common_pair(common_pair< U1, U2 > const &&other)
Constructs from common_pair.
Definition: common_pair.hpp:95
constexpr common_pair(common_pair< U1, U2 > const &other)
Constructs from common_pair.
Definition: common_pair.hpp:84
constexpr common_pair(common_pair< U1, U2 > &other)
Constructs from common_pair.
Definition: common_pair.hpp:79
common_pair()=default
Defaulted.
common_pair & operator=(common_pair const &)=default
Defaulted.