|
bool expected<S, E>::has_value() const noexcept { |
|
return std::holds_alternative<S>(data_); |
|
E& expected<S, E>::error() USERVER_IMPL_LIFETIME_BOUND { |
|
auto* result = std::get_if<unexpected<E>>(&data_); |
|
if (result == nullptr) { |
|
throw bad_expected_access("Trying to get undefined error value from utils::expected"); |
Текущая реализация has_value() фактически проверяет, что объект находится в одном конкретном состоянии из трёх. Можно построить исполнение, в котором вызов error() выбросит исключение при has_value() == false.
Необходимо либо добавить метод has_error(), либо иным образом добавить возможность различать все состояния.
userver/universal/include/userver/utils/expected.hpp
Lines 201 to 202 in 525eba6
userver/universal/include/userver/utils/expected.hpp
Lines 234 to 237 in 525eba6
Текущая реализация
has_value()фактически проверяет, что объект находится в одном конкретном состоянии из трёх. Можно построить исполнение, в котором вызовerror()выбросит исключение приhas_value() == false.Необходимо либо добавить метод
has_error(), либо иным образом добавить возможность различать все состояния.