[alg.req.ind.copy]
24 Iterators library [iterators]
24.3 Iterator requirements [iterator.requirements]
24.3.7 Common algorithm requirements [alg.req]
24.3.7.3 Concept indirectly_copyable [alg.req.ind.copy]
The indirectly_copyable_storable concept augments indirectly_copyable with additional requirements enabling the transfer to be performed through an intermediate object of the indirectly_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 in iter_value_t<In> obj(*i); obj is equal to the value previously denoted by *i.
If iter_reference_t<In> is an rvalue reference type, the resulting state of the value denoted by *i is valid but unspecified ([lib.types.movedfrom]).