( since c++11 std::numeric_limits<T>::min/max return `static constexpr T`) prefer if/else if.. over if/if...)