template <typename View>
concept RandomAccessNDImageViewConcept : ValueType<View> {
typename value_type;
typename reference;
typename difference_type;
typename const_t; where RandomAccessNDImageViewConcept<View>;
typename domain_t = value_type;
typename point_t; where PointNDConcept<point_t>;
typename locator; where RandomAccessNDLocatorConcept<locator>;
typename iterator; where RandomAccessTraversalConcept<iterator>;
typename reverse_iterator; where RandomAccessTraversalConcept<reverse_iterator>;
typename size_type;
template <size_t D> struct axis {
typename coord_t = point_t::axis<D>::coord_t;
typename iterator; where RandomAccessTraversalConcept<iterator>;
where coord_t = iterator::difference_type;
where iterator::value_type == value_type;
};
template <PixelDereferenceAdaptorConcept Deref> struct add_deref {
typename type; where RandomAccessNDImageViewConcept<type>;
static type make(const View& v, const Deref& deref);
};
static const size_t num_dimensions = point_t::num_dimensions;
View::View(const locator&, const point_type&);
size_type View::size() const;
reference operator[](const difference_type&) const;
iterator View::begin() const;
iterator View::end() const;
reverse_iterator View::rbegin() const;
reverse_iterator View::rend() const;
iterator View::at(const point_t&);
point_t dimensions() const;
template <size_t D> axis<D>::iterator axis_iterator(const point_t&) const;
reference operator()(const point_t&) const;
};