optional: Remove the value() method that returns non-const-ref.

I'm not convinced that `opt.value() = foo` is a desirable pattern,
and worse still it confuses some compilers about which overload to
use.

Just remove it.
This commit is contained in:
Ben Clayton 2020-01-22 12:00:02 +00:00
parent ced82a0501
commit 4abe43c131

View File

@ -50,7 +50,6 @@ class optional {
// value() returns the contained value, or defaultValue if the optional does // value() returns the contained value, or defaultValue if the optional does
// not contain a value. // not contain a value.
inline T& value(const T& defaultValue);
inline const T& value(const T& defaultValue) const; inline const T& value(const T& defaultValue) const;
// operator bool() returns true if the optional contains a value. // operator bool() returns true if the optional contains a value.
@ -119,14 +118,6 @@ const T& optional<T>::value() const {
return val; return val;
} }
template <typename T>
T& optional<T>::value(const T& defaultValue) {
if (!has_value()) {
return defaultValue;
}
return val;
}
template <typename T> template <typename T>
const T& optional<T>::value(const T& defaultValue) const { const T& optional<T>::value(const T& defaultValue) const {
if (!has_value()) { if (!has_value()) {