On 2014-10-07 12:48, Jonathan Wakely wrote:
That's almost certainly an improvement anyway, the compiler can pass
an int_fast8_t in a register more efficiently than passing by
reference.
But you haven't actually fixed the root cause of the problem, which is
that you haven't defined your static variables.
Well, where exactly should I "define" them?
Inside the body of the xorshift_engine class I have:
static constexpr size_t word_size =
std::numeric_limits<UIntType>::digits;
static constexpr size_t state_size = n;
static constexpr int_fast8_t shift_1 = a >= 0 ? a : -a;
static constexpr int_fast8_t shift_2 = b >= 0 ? b : -b;
static constexpr int_fast8_t shift_3 = c >= 0 ? c : -c;
static constexpr result_type multiplier = m;
static constexpr result_type default_seed = 5489u;
I don't use these anywhere but inside the bodies of xorshift_engine
member functions.
I fail to see where else I am supposed to define these variables for use
inside the class.