From Jason Turner

[algorithms.results]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpbit3w1q8/{from.md → to.md} +36 -0
tmp/tmpbit3w1q8/{from.md → to.md} RENAMED
@@ -138,8 +138,44 @@ namespace std::ranges {
138
  requires convertible_to<I, I2>
139
  constexpr operator in_found_result<I2>() && {
140
  return {std::move(in), found};
141
  }
142
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  }
144
  ```
145
 
 
138
  requires convertible_to<I, I2>
139
  constexpr operator in_found_result<I2>() && {
140
  return {std::move(in), found};
141
  }
142
  };
143
+
144
+ template<class I, class T>
145
+ struct in_value_result {
146
+ [[no_unique_address]] I in;
147
+ [[no_unique_address]] T value;
148
+
149
+ template<class I2, class T2>
150
+ requires convertible_to<const I&, I2> && convertible_to<const T&, T2>
151
+ constexpr operator in_value_result<I2, T2>() const & {
152
+ return {in, value};
153
+ }
154
+
155
+ template<class I2, class T2>
156
+ requires convertible_to<I, I2> && convertible_to<T, T2>
157
+ constexpr operator in_value_result<I2, T2>() && {
158
+ return {std::move(in), std::move(value)};
159
+ }
160
+ };
161
+
162
+ template<class O, class T>
163
+ struct out_value_result {
164
+ [[no_unique_address]] O out;
165
+ [[no_unique_address]] T value;
166
+
167
+ template<class O2, class T2>
168
+ requires convertible_to<const O&, O2> && convertible_to<const T&, T2>
169
+ constexpr operator out_value_result<O2, T2>() const & {
170
+ return {out, value};
171
+ }
172
+
173
+ template<class O2, class T2>
174
+ requires convertible_to<O, O2> && convertible_to<T, T2>
175
+ constexpr operator out_value_result<O2, T2>() && {
176
+ return {std::move(out), std::move(value)};
177
+ }
178
+ };
179
  }
180
  ```
181