13 #ifndef TestUtils_Option_HPP 14 #define TestUtils_Option_HPP 19 template <
typename T, T noValue = T()>
22 enum class State { VALUE, NO_VALUE };
25 explicit Option(T value) : m_state(State::VALUE), m_value(value) {}
26 Option() : m_state(State::NO_VALUE), m_value(noValue) {}
33 bool hasValue()
const {
return this->m_state == State::VALUE; }
35 this->m_state = State::VALUE;
36 this->m_value = value;
38 void clear() { this->m_state = State::NO_VALUE; }
46 result = this->m_value;
T getOrElse(T value) const
static Option< T > some(T value)
static constexpr Option< T > none()