19 template<
typename X,
typename IDX2>
friend class static_vector;
25 typedef IDX index_type;
28 static_vector(value_type *v, index_type length) : _v(v), _l(length) {}
31 typename = enable_if_t<is_same<remove_extent_t<Z>, T>::value>>
37 typename = enable_if_t<is_convertible<X, T>::value>>
40 index_type size()
const {
return _l; }
41 bool empty()
const {
return _l == 0; }
43 value_type &operator [] (index_type idx) {
return _v[idx]; }
44 value_type
const &operator [] (index_type idx)
const {
return _v[idx]; }
46 value_type *begin() {
return _v; }
47 value_type *end() {
return _v + _l; }
48 value_type
const *begin()
const {
return _v; }
49 value_type
const *end()
const {
return _v + _l; }
50 value_type
const *cbegin()
const {
return _v; }
51 value_type
const *cend()
const {
return _v + _l; }
54 index_type
index(value_type
const *o)
const {
return o - _v; }
55 index_type
index(value_type
const &o)
const {
return &o - _v; }