Let 
i be a dereferenceable value of type 
In.In and 
Out model 
indirectly_movable_storable<In, Out>
only if after the initialization of the object 
obj in
iter_value_t<In> obj(ranges::iter_move(i));
obj is equal to the value previously denoted by 
*i.  If
iter_rvalue_reference_t<In> is an rvalue reference type,
the resulting state of the value denoted by 
*i is
valid but unspecified (
[lib.types.movedfrom])
.