Ticket #9930: main.cpp

File main.cpp, 913 bytes (added by Tim Cooijmans <t.cooijmans@…>, 9 years ago)
Line 
1#include <cstdint>
2#include <iostream>
3#include <boost/random.hpp>
4
5#ifdef USE_64BIT
6typedef boost::mt19937_64 MT_TYPE;
7typedef uint64_t INT_TYPE;
8#else
9typedef boost::mt19937 MT_TYPE;
10typedef uint32_t INT_TYPE;
11#endif
12
13#define MAKE_GENERATOR() \
14 MT_TYPE base_generator(0); \
15 boost::uniform_int<INT_TYPE> distribution; \
16 boost::variate_generator<MT_TYPE&, boost::uniform_int<INT_TYPE>> generator(base_generator, distribution);
17
18boost::variate_generator<MT_TYPE&, boost::uniform_int<INT_TYPE>> return_generator() {
19 MAKE_GENERATOR();
20 return generator;
21}
22
23INT_TYPE generate_directly() {
24 MAKE_GENERATOR();
25 return generator();
26}
27
28INT_TYPE generate_after_copy() {
29 auto generator = return_generator();
30 return generator();
31}
32
33int main(int argc, char** argv) {
34 std::cout << generate_directly() << std::endl;
35 std::cout << generate_after_copy() << std::endl;
36}