Implement specialized swap() for expected<T, E> am: f927d5ca7e am: 2e426925ff am: 2081a0d6e3 am: 31ed57c908
Original change: https://android-review.googlesource.com/c/platform/system/libbase/+/1446815
Change-Id: Icf4721e918bd10acb97018c16eb8b4ad9c55ba1d
diff --git a/include/android-base/expected.h b/include/android-base/expected.h
index 9470344..9668612 100644
--- a/include/android-base/expected.h
+++ b/include/android-base/expected.h
@@ -380,7 +380,7 @@
// Specialized algorithms
template<class T1, class E1>
- friend void swap(expected<T1, E1>&, expected<T1, E1>&) noexcept;
+ friend void swap(expected<T1, E1>& x, expected<T1, E1>& y) noexcept(noexcept(x.swap(y)));
private:
std::variant<value_type, unexpected_type> var_;
@@ -416,6 +416,11 @@
return y.has_value() || (x.value() != y.error());
}
+template<class T1, class E1>
+void swap(expected<T1, E1>& x, expected<T1, E1>& y) noexcept(noexcept(x.swap(y))) {
+ x.swap(y);
+}
+
template<class E>
class _NODISCARD_ expected<void, E> {
public:
@@ -570,7 +575,7 @@
// Specialized algorithms
template<class T1, class E1>
- friend void swap(expected<T1, E1>&, expected<T1, E1>&) noexcept;
+ friend void swap(expected<T1, E1>& x, expected<T1, E1>& y) noexcept(noexcept(x.swap(y)));
private:
std::variant<std::monostate, unexpected_type> var_;