Concept Subspace :: sus :: mem :: MoveOrRef

template <class T>
concept MoveOrRef
requires
Move<T> || std::is_reference_v<T>

A MoveOrRef object or reference of type T can be moved to construct a new T.

This concept is used for templates that want to be generic over references, that is templates that want to allow their template parameter to be a reference and work with that reference as if it were an object itself. This is uncommon outside of library implementations, and its usage should typically be encapsulated inside a type that is Move.