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])
.