vector_range(self_type const & other)
   : base_type(const_cast<handle_type &>(other.handle()),
               other.size(), other.start(), other.stride()) {}
 vector_range(self_type const & v, range const & entry_range)
   : base_type(const_cast<handle_type &>(v.handle()),
               entry_range.size(), v.start() + v.stride() * entry_range.start(), v.stride()) {}
 matrix_range(self_type const & other) : base_type(const_cast<handle_type &>(other.handle()),
                                                   other.size1(), other.start1(), other.stride1(), other.internal_size1(),
                                                   other.size2(), other.start2(), other.stride2(), other.internal_size2(),
                                                   other.row_major()) {}
 vector_slice(self_type const & v, slice const & entry_slice)
   : base_type(const_cast<handle_type &>(v.handle()),
               entry_slice.size(), v.start() + v.stride() * entry_slice.start(), v.stride() * entry_slice.stride()) {}
 matrix_range(self_type const & A,
              range const & row_range,
              range const & col_range) : base_type(const_cast<handle_type &>(A.handle()),
                                                   row_range.size(), row_range.start() * A.stride1() + A.start1(), A.stride1(), A.internal_size1(),
                                                   col_range.size(), col_range.start() * A.stride2() + A.start2(), A.stride2(), A.internal_size2(),
                                                   A.row_major()) {}