15 template<
typename T,
typename IDX =
unsigned>
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) {}
32 typename =
typename enable_if<is_convertible<X, T>::value>::type>
35 index_type size()
const {
return _l; }
36 bool empty()
const {
return _l == 0; }
38 value_type &operator [] (index_type idx) {
return _v[idx]; }
39 value_type
const &operator [] (index_type idx)
const {
return _v[idx]; }
41 value_type *begin() {
return _v; }
42 value_type *end() {
return _v + _l; }
43 value_type
const *begin()
const {
return _v; }
44 value_type
const *end()
const {
return _v + _l; }
45 value_type
const *cbegin()
const {
return _v; }
46 value_type
const *cend()
const {
return _v + _l; }
49 index_type
index(value_type
const *o)
const {
return o - _v; }
50 index_type
index(value_type
const &o)
const {
return &o - _v; }
Simple encapsulation for a dynamically allocated array.
index_type index(value_type const *o) const
Get the index of the given element of the array.
static_vector(static_vector< X, IDX > const &o)
Conversion from compatible arrays.