8template<storm::OptimizationDirection Dir,
typename ValueType>
10 if constexpr (!SupportsInfinity) {
15template<storm::OptimizationDirection Dir,
typename ValueType>
17 if constexpr (!SupportsInfinity) {
22template<storm::OptimizationDirection Dir,
typename ValueType>
25 if constexpr (!SupportsInfinity) {
31template<storm::OptimizationDirection Dir,
typename ValueType>
33 data.value = std::move(value);
34 if constexpr (!SupportsInfinity) {
40template<storm::OptimizationDirection Dir,
typename ValueType>
42 if constexpr (!SupportsInfinity) {
48 return value < data.value;
51 return value > data.value;
55template<storm::OptimizationDirection Dir,
typename ValueType>
60 return *
this &= *other;
63template<storm::OptimizationDirection Dir,
typename ValueType>
68 return *
this &= std::move(*other);
71template<storm::OptimizationDirection Dir,
typename ValueType>
75 if constexpr (!SupportsInfinity) {
83template<storm::OptimizationDirection Dir,
typename ValueType>
86 data.value = std::move(value);
87 if constexpr (!SupportsInfinity) {
95template<storm::OptimizationDirection Dir,
typename ValueType>
97 if constexpr (SupportsInfinity) {
98 return data.value == data.baseValue();
104template<storm::OptimizationDirection Dir,
typename ValueType>
110template<storm::OptimizationDirection Dir,
typename ValueType>
116template<storm::OptimizationDirection Dir,
typename ValueType>
125template<storm::OptimizationDirection Dir,
typename ValueType>
127 if constexpr (SupportsInfinity) {
128 data.value = data.baseValue();
Stores and manages an extremal (maximal or minimal) value.
bool operator&=(Extremum const &other)
Updates the stored value, if the given extremal value is better.
ValueType const & operator*() const
std::optional< ValueType > getOptionalValue() const
bool better(ValueType const &value) const
void reset()
Forgets the extremal value so that this represents the extremum over an empty set.
Extremum & operator=(Extremum const &)=default
#define STORM_LOG_ASSERT(cond, message)
bool constexpr maximize(OptimizationDirection d)
bool constexpr minimize(OptimizationDirection d)