From 6da91be4978e30725b536c472f68083e2c593362 Mon Sep 17 00:00:00 2001 From: "A. Cody Schuffelen" Date: Mon, 22 Dec 2025 19:09:44 -0800 Subject: [PATCH] Simplify `result/expected.h` - The `CF_EXPECT*` macros never used the `Result&&` versions of `TypeIsSuccess` and `OutcomeDereference`. - One use of `type_traits` conditional logic in `OutcomeDereference` was replaced with overload resolution. --- base/cvd/cuttlefish/result/expect.h | 21 ++++----------------- base/cvd/cuttlefish/result/result.h | 2 +- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/base/cvd/cuttlefish/result/expect.h b/base/cvd/cuttlefish/result/expect.h index a9c437b3a10..5f785e4e6b2 100644 --- a/base/cvd/cuttlefish/result/expect.h +++ b/base/cvd/cuttlefish/result/expect.h @@ -56,14 +56,11 @@ T OutcomeDereference(std::optional&& value) { return std::move(*value); } +inline void OutcomeDereference(Result&&) {} + template -typename std::conditional_t, bool, T> OutcomeDereference( - Result&& result) { - if constexpr (std::is_void::value) { - return result.ok(); - } else { - return std::move(*result); - } +T OutcomeDereference(Result&& result) { + return std::move(*result); } template @@ -84,11 +81,6 @@ bool TypeIsSuccess(Result& value) { return value.ok(); } -template -bool TypeIsSuccess(Result&& value) { - return value.ok(); -} - inline auto ErrorFromType(bool) { return StackTraceError(); } template @@ -101,11 +93,6 @@ auto ErrorFromType(Result& value) { return value.error(); } -template -auto ErrorFromType(Result&& value) { - return value.error(); -} - #define CF_EXPECT_OVERLOAD(_1, _2, NAME, ...) NAME #define CF_EXPECT2(RESULT, MSG) \ diff --git a/base/cvd/cuttlefish/result/result.h b/base/cvd/cuttlefish/result/result.h index 88291fc647b..cb862269958 100644 --- a/base/cvd/cuttlefish/result/result.h +++ b/base/cvd/cuttlefish/result/result.h @@ -15,5 +15,5 @@ #pragma once -#include "cuttlefish/result/expect.h" // IWYU pragma: export +#include "cuttlefish/result/expect.h" // IWYU pragma: export #include "cuttlefish/result/result_type.h" // IWYU pragma: export