Add optional::has_value() to fulfill C++17's API (#195)

This commit is contained in:
mchodzikiewicz 2020-03-02 13:32:56 +01:00 committed by GitHub
parent f20969ea40
commit 2c1faa1bf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -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.
//***************************************************************************

View File

@ -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());
}
//*************************************************************************