Сделайте ваш объект mersenne_twister изменчивым в вашем классе. Не видя весь ваш код (особенно часть do_something), мы не можем быть уверены, но я предполагаю, что у вас есть объект в вашем классе типа merseene_twister, который вы используете, функция которого сама по себе не является константной функцией , Это вызывает ошибку в вашем классе, потому что ваша const-функция вызывает функцию в merseen_twister, которая может изменить ее, нарушая вашу const-сигнатуру.
// I'm using this as an example. Yours may differ
typedef std::mersenne_twister<unsigned int, 32, 624,
397, 31, 0x9908b0df, 11, 7, 0x9d2c5680,
15, 0xefc60000, 18> MerTwister;
class Object
{
public:
int Object::const_method() const
{
std::tr1::uniform_int<int> uni(0,100);
// do some calculation using the MerTwister object
return result;
}
private:
mutable MerTwister twister;
};