@@ -22,61 +22,63 @@ struct tuple<T, Ts...> {
2222
2323 TRACCC_HOST_DEVICE constexpr tuple (){};
2424
25- constexpr tuple (const tuple &o) requires(
26- std::is_copy_constructible_v<T> &&
27- (std::is_copy_constructible_v<Ts> && ...)) = default;
25+ constexpr tuple (const tuple &o)
26+ requires(std::is_copy_constructible_v<T> &&
27+ (std::is_copy_constructible_v<Ts> && ...))
28+ = default;
2829
2930 template <typename U, typename ... Us>
30- requires std::is_constructible_v<T, U &&>
31- &&std::is_constructible_v<tuple<Ts...>, Us &&...>
32- TRACCC_HOST_DEVICE explicit constexpr tuple (
33- const tuple<U, Us...> &o)
31+ requires std::is_constructible_v<T, U &&> &&
32+ std::is_constructible_v<tuple<Ts...>, Us &&...>
33+ TRACCC_HOST_DEVICE explicit constexpr tuple (const tuple<U, Us...> &o)
3434 : v(o.v), r(o.r) {}
3535
3636 constexpr tuple (tuple &&o) noexcept
3737 requires(std::is_move_constructible_v<T> &&
38- (std::is_move_constructible_v<Ts> && ...)) = default;
38+ (std::is_move_constructible_v<Ts> && ...))
39+ = default;
3940
4041 template <typename U, typename ... Us>
41- requires std::is_constructible_v<T, U &&>
42- && std::is_constructible_v<tuple<Ts...>, Us &&...>
43- TRACCC_HOST_DEVICE explicit constexpr tuple (tuple<U, Us...> &&o)
42+ requires std::is_constructible_v<T, U &&> &&
43+ std::is_constructible_v<tuple<Ts...>, Us &&...>
44+ TRACCC_HOST_DEVICE explicit constexpr tuple (tuple<U, Us...> &&o)
4445 : v(std::move(o.v)), r(std::move(o.r)) {}
4546
4647 template <typename U, typename ... Us>
47- requires std::is_constructible_v<T, U &&>
48- &&std::is_constructible_v<tuple<Ts...>, Us &&...> &&
49- (!(std::is_same_v<tuple, U> ||
50- (std::is_same_v<tuple, Us> || ...))) TRACCC_HOST_DEVICE
51- explicit constexpr tuple (U &&_v, Us &&... _r)
52- : v(std::forward<U>(_v)),
53- r(std::forward<Us>(_r)...) {}
48+ requires std::is_constructible_v<T, U &&> &&
49+ std::is_constructible_v<tuple<Ts...>, Us &&...> &&
50+ (!(std::is_same_v<tuple, U> ||
51+ (std::is_same_v<tuple, Us> || ...)))
52+ TRACCC_HOST_DEVICE explicit constexpr tuple (U &&_v, Us &&..._r)
53+ : v(std::forward<U>(_v)), r(std::forward<Us>(_r)...) {}
5454
5555 constexpr ~tuple () noexcept = default ;
5656
57- constexpr tuple &operator =(const tuple &other) requires (
58- std::is_copy_assignable_v<T> &&
59- (std::is_copy_assignable_v<Ts> && ...)) = default ;
57+ constexpr tuple &operator =(const tuple &other)
58+ requires (std::is_copy_assignable_v<T> &&
59+ (std::is_copy_assignable_v<Ts> && ...))
60+ = default ;
6061
6162 template <typename U, typename ... Us>
62- TRACCC_HOST_DEVICE constexpr tuple &
63- operator =( const tuple<U, Us... > &other) requires (
64- std::is_assignable_v<T &, const U &> &&
65- (std::is_assignable_v<Ts &, const Us &> && ...)) {
63+ TRACCC_HOST_DEVICE constexpr tuple &operator =( const tuple<U, Us...> &other)
64+ requires (std::is_assignable_v<T &, const U & > &&
65+ ( std::is_assignable_v<Ts &, const Us &> && ...))
66+ {
6667 v = other.v ;
6768 r = other.r ;
6869 return *this ;
6970 }
7071
7172 constexpr tuple &operator =(tuple &&other) noexcept
7273 requires (std::is_move_assignable_v<T> &&
73- (std::is_move_assignable_v<Ts> && ...)) = default ;
74+ (std::is_move_assignable_v<Ts> && ...))
75+ = default ;
7476
7577 template <typename U, typename ... Us>
76- TRACCC_HOST_DEVICE constexpr tuple &operator =(
77- tuple<U, Us...> &&other) requires (std::is_assignable_v<T &, U> &&
78- (std::is_assignable_v<Ts &, Us> &&
79- ...)) {
78+ TRACCC_HOST_DEVICE constexpr tuple &operator =(tuple<U, Us...> &&other)
79+ requires (std::is_assignable_v<T &, U> &&
80+ (std::is_assignable_v<Ts &, Us> && ...))
81+ {
8082 v = std::move (other.v );
8183 r = std::move (other.r );
8284 return *this ;
0 commit comments