给定一个变量定义为
T x;
其中T
是一个通用的算术类型(即,使得std::is_arithmetic
),有一个简单的表达式(例如,从某事std::numeric_limits
),用于评估到最低值y
表达中T
,使得y
> x
?
(即一种广义增量。。)
您可以使用std::nextafter
。
请注意,在这里我使用std::numeric_limits
,如果您想要有意义的行为以表示无限性,则可能需要修改代码。
#include
#include
#include
#include
#include
template && !std::is_integral_v, bool> = false>
Floating generic_next_val(Floating val) {
return std::nextafter(val, std::numeric_limits::max());
}
template && std::is_integral_v, int> = 0>
Integral generic_next_val(Integral val) {
return static_cast(val + static_cast(1));
}
int main() {
int a = 1;
float f = 0.0f;
std::cout << std::setprecision(20) << generic_next_val(f) << " " << generic_next_val(a) << std::endl;
return 0;
}