'Error! constexpr variable must be initialized by a constant expression constexpr
// 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;
It gives me error! When I compile, it
says: error: constexpr variable 'MAX_F_U_T' must be initialized by a constant expression constexpr int MAX_F_U_T = BB;
Solution 1:[1]
You can get constexpr versions of std::floor and std::log in GCC, but I don't think it is ISO C++. Also don't forget to make BB a constexpr as well.
#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;
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Henri Menke |
