复制随机数引擎和随机数分布时会发生什么?

7co*_*ows 17 c++ c++11

在这段代码中:

std::default_random_engine e;
std::default_random_engine e2 = e;                        //1
std::default_random_engine e3(e2);                        //2
std::default_random_engine e4(std::move(e3));             //3

std::uniform_real_distribution<double> d(0,1);
std::uniform_real_distribution<double> d2 = d;            //4
std::uniform_real_distribution<double> d3(d2);            //5
std::uniform_real_distribution<double> d4(std::move(d3)); //6
Run Code Online (Sandbox Code Playgroud)

你能解释一下1到6例中究竟发生了什么吗?我没有在任何地方看到这些类的复制赋值,复制构造和移动构造.

特别是:当我们从另一个创建一个新的引擎/发行版时,它是否重置继续停止

int*_*jay 12

复制引擎或分发时,可以保证两个引擎(或分发)将从该点生成相同的值序列.

对于发动机,标准要求E(x)将产生比较等于x的发动机(26.5.1.4,表117).如果对引擎的未来调用的无限序列将产生相同的值(26.5.1.4),则引擎比较相等.

对于分发,它们是必需的(26.5.1.6p4)以满足CopyConstructible的要求(表21).这要求创建的对象与原始对象等效.比较相等的分布(26.5.1.6,表118)的要求是它们具有相同的参数,并且生成的未来值序列(如果使用等效引擎)是相同的.