namespace std {
template<class ElementType>
struct default_accessor {
using offset_policy = default_accessor;
using element_type = ElementType;
using reference = ElementType&;
using data_handle_type = ElementType*;
constexpr default_accessor() noexcept = default;
template<class OtherElementType>
constexpr default_accessor(default_accessor<OtherElementType>) noexcept;
constexpr reference access(data_handle_type p, size_t i) const noexcept;
constexpr data_handle_type offset(data_handle_type p, size_t i) const noexcept;
};
}
default_accessor meets the accessor policy requirements
. ElementType is required to be a complete object type
that is neither an abstract class type nor an array type
. Each specialization of
default_accessor is
a trivially copyable type that models
semiregular.[0,n) is an accessible range for
an object
p of type
data_handle_type and
an object of type
default_accessor
if and only if [
p, p + n) is a valid range
.