using assign_swap where useful in qr.hpp