#include #include #include #ifdef USE_64BIT typedef boost::mt19937_64 MT_TYPE; typedef uint64_t INT_TYPE; #else typedef boost::mt19937 MT_TYPE; typedef uint32_t INT_TYPE; #endif #define MAKE_GENERATOR() \ MT_TYPE base_generator(0); \ boost::uniform_int distribution; \ boost::variate_generator> generator(base_generator, distribution); boost::variate_generator> return_generator() { MAKE_GENERATOR(); return generator; } INT_TYPE generate_directly() { MAKE_GENERATOR(); return generator(); } INT_TYPE generate_after_copy() { auto generator = return_generator(); return generator(); } int main(int argc, char** argv) { std::cout << generate_directly() << std::endl; std::cout << generate_after_copy() << std::endl; }