@@ -38,11 +38,12 @@ class Tuple final {
38
38
requires (I <= sizeof ...(Ts))
39
39
constexpr inline const auto & get () const & noexcept {
40
40
::sus::check (!moved_from());
41
- return Access<I + 1 >::get (storage_);
41
+ return Access<I + 1u >::get (storage_);
42
42
}
43
43
44
44
// / Disallows getting a reference to temporary Tuple.
45
45
template <size_t I>
46
+ requires (I <= sizeof ...(Ts))
46
47
constexpr inline auto get () && =
47
48
delete; // Don't return reference to temporary.
48
49
@@ -51,15 +52,15 @@ class Tuple final {
51
52
requires (I <= sizeof ...(Ts))
52
53
inline auto & get_mut () & noexcept {
53
54
::sus::check (!moved_from());
54
- return Access<I + 1 >::get_mut (storage_);
55
+ return Access<I + 1u >::get_mut (storage_);
55
56
}
56
57
57
58
// / Returns the `I`th element in the tuple.
58
59
template <size_t I>
59
60
requires (I <= sizeof ...(Ts))
60
61
constexpr inline auto unwrap () && noexcept {
61
62
::sus::check (!set_moved_from());
62
- return Access<I + 1 >::unwrap (static_cast <Storage&&>(storage_));
63
+ return Access<I + 1u >::unwrap (static_cast <Storage&&>(storage_));
63
64
}
64
65
65
66
// / sus::num::Eq<Tuple<U...>> trait.
@@ -83,7 +84,7 @@ class Tuple final {
83
84
::sus::check (!r.moved_from());
84
85
return __private::storage_cmp (
85
86
std::strong_ordering::equal, storage_, r.storage_ ,
86
- std::make_index_sequence<1 + sizeof ...(Ts)>());
87
+ std::make_index_sequence<1u + sizeof ...(Ts)>());
87
88
}
88
89
89
90
// / sus::num::WeakOrd<Tuple<U...>> trait.
@@ -96,7 +97,7 @@ class Tuple final {
96
97
::sus::check (!r.moved_from());
97
98
return __private::storage_cmp (
98
99
std::weak_ordering::equivalent, storage_, r.storage_ ,
99
- std::make_index_sequence<1 + sizeof ...(Ts)>());
100
+ std::make_index_sequence<1u + sizeof ...(Ts)>());
100
101
}
101
102
102
103
// / sus::num::PartialOrd<Tuple<U...>> trait.
@@ -109,7 +110,7 @@ class Tuple final {
109
110
::sus::check (!r.moved_from());
110
111
return __private::storage_cmp (
111
112
std::partial_ordering::equivalent, storage_, r.storage_ ,
112
- std::make_index_sequence<1 + sizeof ...(Ts)>());
113
+ std::make_index_sequence<1u + sizeof ...(Ts)>());
113
114
}
114
115
115
116
private:
@@ -124,10 +125,10 @@ class Tuple final {
124
125
125
126
// TODO: Provide a way to opt out of all moved-from checks?
126
127
constexpr inline bool moved_from () const & noexcept {
127
- return Access<0 >::get (storage_);
128
+ return Access<0u >::get (storage_);
128
129
}
129
130
constexpr inline bool set_moved_from () & noexcept {
130
- return ::sus::mem::replace (mref (Access<0 >::get_mut (storage_)), true );
131
+ return ::sus::mem::replace (mref (Access<0u >::get_mut (storage_)), true );
131
132
}
132
133
133
134
Storage storage_;
0 commit comments