79 lines
2.5 KiB
Diff
79 lines
2.5 KiB
Diff
diff --recursive --unified tl-expected-1.0.1-orig/include/tl/expected.hpp tl-expected-1.0.1/include/tl/expected.hpp
|
|
--- tl-expected-1.0.1-orig/include/tl/expected.hpp 2022-08-30 20:10:13.269489852 +0100
|
|
+++ tl-expected-1.0.1/include/tl/expected.hpp 2022-08-30 20:17:35.744258828 +0100
|
|
@@ -24,6 +24,7 @@
|
|
#include <functional>
|
|
#include <type_traits>
|
|
#include <utility>
|
|
+#include <cassert>
|
|
|
|
#if defined(__EXCEPTIONS) || defined(_CPPUNWIND)
|
|
#define TL_EXPECTED_EXCEPTIONS_ENABLED
|
|
@@ -1862,27 +1863,37 @@
|
|
}
|
|
}
|
|
|
|
- constexpr const T *operator->() const { return valptr(); }
|
|
- TL_EXPECTED_11_CONSTEXPR T *operator->() { return valptr(); }
|
|
+ constexpr const T *operator->() const {
|
|
+ assert(has_value());
|
|
+ return valptr();
|
|
+ }
|
|
+ TL_EXPECTED_11_CONSTEXPR T *operator->() {
|
|
+ assert(has_value());
|
|
+ return valptr();
|
|
+ }
|
|
|
|
template <class U = T,
|
|
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
|
constexpr const U &operator*() const & {
|
|
+ assert(has_value());
|
|
return val();
|
|
}
|
|
template <class U = T,
|
|
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
|
TL_EXPECTED_11_CONSTEXPR U &operator*() & {
|
|
+ assert(has_value());
|
|
return val();
|
|
}
|
|
template <class U = T,
|
|
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
|
constexpr const U &&operator*() const && {
|
|
+ assert(has_value());
|
|
return std::move(val());
|
|
}
|
|
template <class U = T,
|
|
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
|
TL_EXPECTED_11_CONSTEXPR U &&operator*() && {
|
|
+ assert(has_value());
|
|
return std::move(val());
|
|
}
|
|
|
|
@@ -1918,10 +1929,22 @@
|
|
return std::move(val());
|
|
}
|
|
|
|
- constexpr const E &error() const & { return err().value(); }
|
|
- TL_EXPECTED_11_CONSTEXPR E &error() & { return err().value(); }
|
|
- constexpr const E &&error() const && { return std::move(err().value()); }
|
|
- TL_EXPECTED_11_CONSTEXPR E &&error() && { return std::move(err().value()); }
|
|
+ constexpr const E &error() const & {
|
|
+ assert(!has_value());
|
|
+ return err().value();
|
|
+ }
|
|
+ TL_EXPECTED_11_CONSTEXPR E &error() & {
|
|
+ assert(!has_value());
|
|
+ return err().value();
|
|
+ }
|
|
+ constexpr const E &&error() const && {
|
|
+ assert(!has_value());
|
|
+ return std::move(err().value());
|
|
+ }
|
|
+ TL_EXPECTED_11_CONSTEXPR E &&error() && {
|
|
+ assert(!has_value());
|
|
+ return std::move(err().value());
|
|
+ }
|
|
|
|
template <class U> constexpr T value_or(U &&v) const & {
|
|
static_assert(std::is_copy_constructible<T>::value &&
|