forked from TartanLlama/expected
Fix #26
This commit is contained in:
@@ -22,3 +22,11 @@ TEST_CASE("Issue 17", "[issues.17]") {
|
||||
|
||||
intermediate_result.and_then(operation2);
|
||||
}
|
||||
|
||||
struct a{};
|
||||
struct b:a{};
|
||||
|
||||
TEST_CASE("Issue 26", "[issues.26]") {
|
||||
tl::expected<a, int> exp = tl::expected<b,int>(tl::unexpect, 0);
|
||||
REQUIRE(!exp.has_value());
|
||||
}
|
||||
|
@@ -1487,8 +1487,10 @@ public:
|
||||
: ctor_base(detail::default_constructor_tag{}) {
|
||||
if (rhs.has_value()) {
|
||||
::new (valptr()) T(*rhs);
|
||||
this->m_has_val = true;
|
||||
} else {
|
||||
::new (errptr()) unexpected_type(unexpected<E>(rhs.error()));
|
||||
this->m_has_val = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1503,8 +1505,10 @@ public:
|
||||
: ctor_base(detail::default_constructor_tag{}) {
|
||||
if (rhs.has_value()) {
|
||||
::new (valptr()) T(*rhs);
|
||||
this->m_has_val = true;
|
||||
} else {
|
||||
::new (errptr()) unexpected_type(unexpected<E>(rhs.error()));
|
||||
this->m_has_val = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1517,8 +1521,10 @@ public:
|
||||
: ctor_base(detail::default_constructor_tag{}) {
|
||||
if (rhs.has_value()) {
|
||||
::new (valptr()) T(std::move(*rhs));
|
||||
this->m_has_val = true;
|
||||
} else {
|
||||
::new (errptr()) unexpected_type(unexpected<E>(std::move(rhs.error())));
|
||||
this->m_has_val = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1532,8 +1538,10 @@ public:
|
||||
: ctor_base(detail::default_constructor_tag{}) {
|
||||
if (rhs.has_value()) {
|
||||
::new (valptr()) T(std::move(*rhs));
|
||||
this->m_has_val = true;
|
||||
} else {
|
||||
::new (errptr()) unexpected_type(unexpected<E>(std::move(rhs.error())));
|
||||
this->m_has_val = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user