Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12711fb7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "ftl: add comparison operators to Optional"

parents ebd913b1 f28341ee
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -97,6 +97,16 @@ struct Optional final : std::optional<T> {
  }
  }
};
};


template <typename T, typename U>
constexpr bool operator==(const Optional<T>& lhs, const Optional<U>& rhs) {
  return static_cast<std::optional<T>>(lhs) == static_cast<std::optional<U>>(rhs);
}

template <typename T, typename U>
constexpr bool operator!=(const Optional<T>& lhs, const Optional<U>& rhs) {
  return !(lhs == rhs);
}

// Deduction guides.
// Deduction guides.
template <typename T>
template <typename T>
Optional(T) -> Optional<T>;
Optional(T) -> Optional<T>;
+31 −0
Original line number Original line Diff line number Diff line
@@ -164,4 +164,35 @@ TEST(Optional, AndThen) {
                     }));
                     }));
}
}


// Comparison.
namespace {

constexpr Optional<int> kOptional1 = 1;
constexpr Optional<int> kAnotherOptional1 = 1;
constexpr Optional<int> kOptional2 = 2;
constexpr Optional<int> kOptionalEmpty, kAnotherOptionalEmpty;

constexpr std::optional<int> kStdOptional1 = 1;

static_assert(kOptional1 == kAnotherOptional1);

static_assert(kOptional1 != kOptional2);
static_assert(kOptional2 != kOptional1);

static_assert(kOptional1 != kOptionalEmpty);
static_assert(kOptionalEmpty != kOptional1);

static_assert(kOptionalEmpty == kAnotherOptionalEmpty);

static_assert(kOptional1 == kStdOptional1);
static_assert(kStdOptional1 == kOptional1);

static_assert(kOptional2 != kStdOptional1);
static_assert(kStdOptional1 != kOptional2);

static_assert(kOptional2 != kOptionalEmpty);
static_assert(kOptionalEmpty != kOptional2);

} // namespace

}  // namespace android::test
}  // namespace android::test