19  template<
typename X, 
typename IDX2> 
friend class static_vector;
 
   25  typedef IDX index_type;
 
   27  static_vector() = 
default;
 
   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>>
 
   32  constexpr static_vector(Z &v) : _v(v), _l(array_size(v))
 
   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; }