mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Add optional::has_value() to fulfill C++17's API (#195)
This commit is contained in:
parent
f20969ea40
commit
2c1faa1bf9
@ -351,6 +351,15 @@ namespace etl
|
||||
return valid;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
// Check whether optional contains value
|
||||
//***************************************************************************
|
||||
ETL_CONSTEXPR bool has_value() const ETL_NOEXCEPT
|
||||
{
|
||||
return valid;
|
||||
}
|
||||
|
||||
|
||||
//***************************************************************************
|
||||
/// Get a reference to the value.
|
||||
//***************************************************************************
|
||||
|
||||
@ -65,28 +65,39 @@ namespace
|
||||
|
||||
CHECK(!bool(data1));
|
||||
CHECK(!bool(data2));
|
||||
CHECK(!data1.has_value());
|
||||
CHECK(!data2.has_value());
|
||||
|
||||
|
||||
data1 = Data("Hello");
|
||||
CHECK(bool(data1));
|
||||
CHECK(data1.has_value());
|
||||
CHECK_EQUAL(Data("Hello"), data1);
|
||||
|
||||
data1 = data2;
|
||||
CHECK(!bool(data1));
|
||||
CHECK(!bool(data2));
|
||||
CHECK(!data1.has_value());
|
||||
CHECK(!data2.has_value());
|
||||
|
||||
data1 = Data("World");
|
||||
data2 = data1;
|
||||
CHECK(bool(data1));
|
||||
CHECK(bool(data2));
|
||||
CHECK(data1.has_value());
|
||||
CHECK(data2.has_value());
|
||||
|
||||
etl::optional<Data> data3(data1);
|
||||
CHECK(bool(data3));
|
||||
CHECK(data3.has_value());
|
||||
CHECK_EQUAL(data1, data3);
|
||||
|
||||
etl::optional<Data> data4;
|
||||
data4 = Data("Hello");
|
||||
data4 = etl::nullopt;
|
||||
CHECK(!bool(data4));
|
||||
CHECK(!data4.has_value());
|
||||
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user