[alg.req.ind.copy] (original) (raw)

23 Iterators library [iterators]

23.3 Iterator requirements [iterator.requirements]

23.3.7 Common algorithm requirements [alg.req]

23.3.7.3 Concept indirectly_­copyable [alg.req.ind.copy]

The indirectly_­copyable_­storable concept augmentsindirectly_­copyable with additional requirements enabling the transfer to be performed through an intermediate object of theindirectly_­readable type's value type.

It also requires the capability to make copies of values.

Let i be a dereferenceable value of type In.

In and Out model indirectly_­copyable_­storable<In, Out>only if after the initialization of the object obj initer_value_t<In> obj(*i); obj is equal to the value previously denoted by *i.

Ifiter_­reference_­t<In> is an rvalue reference type, the resulting state of the value denoted by *i is valid but unspecified ([lib.types.movedfrom]).