1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-05 14:18:53 +02:00

Use std::numeric_limits<...>::lowest...

... not the negation of max(), which is wrong for unsigned types, and not
min(), which gives least normalized positive value for floating point types.

lowest() wasn't available before C++11.
This commit is contained in:
Paul Licameli 2018-09-09 12:27:20 -04:00
parent e456b53344
commit 7ab97c969c
3 changed files with 5 additions and 6 deletions

View File

@ -552,8 +552,7 @@ struct IteratorRange : public std::pair<Iterator, Iterator> {
R max( Unary unary_op = {} ) const R max( Unary unary_op = {} ) const
{ {
return this->accumulate( return this->accumulate(
-std::numeric_limits< R >::max(), std::numeric_limits< R >::lowest(),
// std::numeric_limits< R >::lowest(), // TODO C++11
(const R&(*)(const R&, const R&)) std::max, (const R&(*)(const R&, const R&)) std::max,
unary_op unary_op
); );

View File

@ -1940,7 +1940,7 @@ void AudacityProject::FixScrollbars()
panelHeight = 0; panelHeight = 0;
} }
auto LastTime = -std::numeric_limits<double>::max(); auto LastTime = std::numeric_limits<double>::lowest();
auto &tracks = *GetTracks(); auto &tracks = *GetTracks();
for (const Track *track : tracks) { for (const Track *track : tracks) {
// Iterate over pending changed tracks if present. // Iterate over pending changed tracks if present.

View File

@ -174,7 +174,7 @@ public:
void SetMin(ValueType min) void SetMin(ValueType min)
{ {
this->DoSetMin(min); this->DoSetMin(min);
BaseValidator::m_minSet = (min != std::numeric_limits<T>::min()); BaseValidator::m_minSet = (min != std::numeric_limits<T>::lowest());
} }
void SetMax(ValueType max) void SetMax(ValueType max)
@ -461,7 +461,7 @@ public:
FloatingPointValidator(int precision, FloatingPointValidator(int precision,
ValueType *value = NULL, ValueType *value = NULL,
NumValidatorStyle style = NumValidatorStyle::DEFAULT, NumValidatorStyle style = NumValidatorStyle::DEFAULT,
ValueType min = -std::numeric_limits<ValueType>::max(), ValueType min = std::numeric_limits<ValueType>::lowest(),
ValueType max = std::numeric_limits<ValueType>::max()) ValueType max = std::numeric_limits<ValueType>::max())
: Base(value, style) : Base(value, style)
{ {
@ -482,7 +482,7 @@ private:
// NB: Do not use min(), it's not the smallest representable value for // NB: Do not use min(), it's not the smallest representable value for
// the floating point types but rather the smallest representable // the floating point types but rather the smallest representable
// positive value. // positive value.
this->DoSetMin(-std::numeric_limits<ValueType>::max()); this->DoSetMin( std::numeric_limits<ValueType>::lowest());
this->DoSetMax( std::numeric_limits<ValueType>::max()); this->DoSetMax( std::numeric_limits<ValueType>::max());
} }
}; };