The IndirectlyMovable concept specifies the relationship between a Readable type and a Writable type between which values may be moved.
template <class In, class Out> concept bool IndirectlyMovable = Readable<In> && Writable<Out, rvalue_reference_t<In>>;
The IndirectlyMovableStorable concept augments IndirectlyMovable with additional requirements enabling the transfer to be performed through an intermediate object of the Readable type's value type.
template <class In, class Out> concept bool IndirectlyMovableStorable = IndirectlyMovable<In, Out> && Writable<Out, value_type_t<In>> && Movable<value_type_t<In>> && Constructible<value_type_t<In>, rvalue_reference_t<In>> && Assignable<value_type_t<In>&, rvalue_reference_t<In>>;