// The constant base "a" that is being used to compute f_{ut}.
constexpr float A_CONST = 6.76;
// The max number of ratings by any given user on a given date. This
// was found by create_f_u_t.py.
constexpr int MAX_NUM_RAT_USER_DATE = 2651;
// The maximum possible value for f_{ut} is the floor of the log base
// "a" of the maximum number of ratings by any user on a given date.
auto BB = std::floor(std::log(MAX_NUM_RAT_USER_DATE)/std::log(A_CONST));
constexpr int MAX_F_U_T = BB;
它给我错误!当我编译时,它
says: error: constexpr variable 'MAX_F_U_T' must be initialized by a constant expression constexpr int MAX_F_U_T = BB;
最佳答案
您可以在 GCC 中获得 std::floor
和 std::log
的 constexpr
版本,但我不认为它是ISO C++。也不要忘记将 BB
也设为 constexpr
。
#include <cmath>
int main()
{
// The constant base "a" that is being used to compute f_{ut}.
constexpr float A_CONST = 6.76;
// The max number of ratings by any given user on a given date. This
// was found by create_f_u_t.py.
constexpr int MAX_NUM_RAT_USER_DATE = 2651;
// The maximum possible value for f_{ut} is the floor of the log base
// "a" of the maximum number of ratings by any user on a given date.
constexpr auto BB = std::floor(std::log(MAX_NUM_RAT_USER_DATE)/std::log(A_CONST));
constexpr int MAX_F_U_T = BB;
}
关于c++ - 错误! constexpr 变量必须由常量表达式 constexpr 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44233038/