Skip to content
This repository was archived by the owner on May 3, 2026. It is now read-only.

Commit a6310ab

Browse files
committed
fix mistakes in Result class
1 parent 658d9f6 commit a6310ab

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

include/common/result.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ class Result {
261261
* @tparam U Type convertible to T, and U not derived from ResultError
262262
* @param value Value to initialize the result with.
263263
*/
264-
template<traits::IsResultError U>
264+
template<typename U>
265265
requires std::convertible_to<T, U>
266266
constexpr Result(U&& value)
267267
: error(std::monostate()),
@@ -287,11 +287,11 @@ class Result {
287287
* @param self the self object
288288
* @return the error type, wrapped in std::optional
289289
*/
290-
template<typename Self, traits::IsResultError E>
290+
template<traits::IsResultError E, typename Self>
291291
requires traits::is_in_pack_v<E, Errs...>
292-
constexpr auto&& get_error(this Self&& self) {
292+
constexpr auto get_error(this Self&& self) {
293293
if (std::holds_alternative<E>(self.error)) {
294-
return std::optional(std::holds_alternative<E>(std::forward<Self>(self).error));
294+
return std::optional<E>(std::get<E>(std::forward<Self>(self).error));
295295
} else {
296296
return std::optional<E>();
297297
}
@@ -373,7 +373,7 @@ class Result {
373373
&& (traits::all_same_v<or_else_return_t<Self, F, Errs>...>)
374374
&& (std::same_as<T, typename or_else_return_t<Self, F, Errs>::value_type> && ...)
375375
constexpr auto or_else(this Self&& self, F&& f) {
376-
using ReturnType = or_else_return_t<Self, F, std::tuple_element_t<1, std::tuple<Errs...>>>;
376+
using ReturnType = or_else_return_t<Self, F, std::tuple_element_t<0, std::tuple<Errs...>>>;
377377
// if there isn't an error, return
378378
if (!self.has_error()) {
379379
return ReturnType(std::forward<Self>(self).value);
@@ -543,7 +543,7 @@ class Result<void, Errs...> {
543543
&& (traits::all_same_v<or_else_return_t<Self, F, Errs>...>)
544544
&& (std::same_as<void, typename or_else_return_t<Self, F, Errs>::value_type> && ...)
545545
constexpr auto or_else(this Self&& self, F&& f) {
546-
using ReturnType = or_else_return_t<Self, F, std::tuple_element_t<1, std::tuple<Errs...>>>;
546+
using ReturnType = or_else_return_t<Self, F, std::tuple_element_t<0, std::tuple<Errs...>>>;
547547
// if there isn't an error, return
548548
return ReturnType();
549549
// otherwise, invoke the given lambda

0 commit comments

Comments
 (0)