标签: c++ c++11 visual-c++ c++14
constexpr PixelType maxVal = std::numeric_limits<PixelType>::max(); constexpr double lnFactor = std::log(maxVal);
第二行给出错误C2131:表达式未评估为常量
为什么呢?这可以改写,以便编译吗?
答案 0 :(得分:0)
您收到编译错误的原因是std::log不是constexpr。
std::log
constexpr
我不知道有一种可移植的方法可以使其与constexpr一起使用,但GCC的__builtin_log适用于constexpr上下文(godbolt):
__builtin_log
constexpr double lnFactor = __builtin_log(42.0);