in src/iceberg/expected.h [1452:1462]
constexpr T value_or(U&& v) && noexcept(
std::is_nothrow_move_constructible_v<T> &&
expected_detail::is_nothrow_convertible_v<U, T>) {
static_assert(std::is_move_constructible_v<T>, "T must be move-constructible");
static_assert(std::is_convertible_v<U, T>, "is_convertible_v<U, T> must be true");
if (this->m_has_val) {
return std::move(this->m_val);
} else {
return static_cast<T>(std::forward<U>(v));
}
}