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>>;