我有一个简单的函数来检查一个值是否大于三分之一:
bool check(float x) {
return x > 1.f/3;
}
根据我所读到的内容,编译器可能会在编译时计算 1.f/3 的结果以提高性能,但这不是必需的。要强迫他这样做,建议使用:
bool check(float x) {
constexpr float one_third = 1.f/3;
return x > one_third;
}
我的问题是是否有一种方法可以将其作为单行代码来执行此操作,而无需定义单独的表达式。比如:
bool check(float x) {
return x > (constexpr float(1.f/3));
}
我找不到任何方法可以做到这一点,想请求确认。我找到了 if-constexpr,但这要求 if 的两边都是 constexpr,而不仅仅是它的内部子集。 Lambda-constexpr 或 consteval 可以用作 oneliners 吗?
是否有办法将其作为单行代码来做到这一点,
是的,您可以使用 lambda 并立即调用它:
bool check(float x)
{
return [x]()constexpr{return x>float(1.f/3);}();
}