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()) {}