[mdspan.accessor.general]

# 23 Containers library [[containers]](./#containers)

## 23.7 Views [[views]](views#mdspan.accessor.general)

### 23.7.3 Multidimensional access [[views.multidim]](views.multidim#mdspan.accessor.general)

#### 23.7.3.5 Accessor policy [[mdspan.accessor]](mdspan.accessor#general)

#### 23.7.3.5.1 General [mdspan.accessor.general]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L24204)

An [*accessor policy*](#def:accessor_policy "23.7.3.5.1 General [mdspan.accessor.general]") defines types and operations by which
a reference to a single object is created
from an abstract data handle to a number of such objects and an index[.](#1.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L24209)

A range of indices [0,N) is an [*accessible range*](#def:range,accessible "23.7.3.5.1 General [mdspan.accessor.general]") of
a given data handle and an accessor
if, for each i in the range,
the accessor policy's access function produces a valid reference to an object[.](#2.sentence-1)

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L24215)

In [[mdspan.accessor.reqmts]](mdspan.accessor.reqmts "23.7.3.5.2 Requirements"),

- [(3.1)](#3.1)

  A denotes an accessor policy[.](#3.1.sentence-1)

- [(3.2)](#3.2)

  a denotes a value of type A or const A[.](#3.2.sentence-1)

- [(3.3)](#3.3)

  p denotes a value of type A​::​data_handle_type or const A​::​data_handle_type[.](#3.3.sentence-1)
  [*Note [1](#note-1)*:
  The type A​::​data_handle_type need not be dereferenceable[.](#3.3.sentence-2)
 â *end note*]

- [(3.4)](#3.4)

  n, i, and j each denote values of type size_t[.](#3.4.sentence-1)
