A *random number engine adaptor*
(commonly shortened to *adaptor*)
a of type A
is a random number engine
that takes values
produced by some other random number engine,
and applies an algorithm to those values
in order to deliver a sequence of values
with different randomness properties.

The requirements of a random number engine type
shall be interpreted as follows
with respect to a random number engine adaptor type.

```
A::A();
```

```
bool operator==(const A& a1, const A& a2);
```

```
A::A(result_type s);
```

```
template<class Sseq> A::A(Sseq& q);
```

```
void seed();
```

```
void seed(result_type s);
```

```
template<class Sseq> void seed(Sseq& q);
```

A shall also satisfy
the following additional requirements:

- The complexity of each function shall not exceed the complexity of the corresponding function applied to the base engine.
- The state of A shall include the state of its base engine.The size of A's state shall be no less than the size of the base engine.
- Copying A's state (e.g., during copy construction or copy assignment) shall include copying the state of the base engine of A.
- The textual representation of A shall include the textual representation of its base engine.