8 template <class T, size_t s>
12 typedef size_t size_type;
13 typedef value_type * pointer;
14 typedef value_type const * const_pointer;
15 typedef value_type & reference;
16 typedef value_type const & const_reference;
17 typedef value_type * iterator;
18 typedef value_type const * const_iterator;
19 size_type size() const { return s; }
20 reference operator[](int i) { return arr[i]; }
21 const_reference operator[](int i) const { return arr[i]; }
22 void operator=(block const & b) {
23 Assert(b.size() == size());
24 for (size_t i = 0; i < size(); ++i) {
28 bool operator==(block const & b) const {
29 Assert(b.size() == size());
30 for (size_t i = 0; i < size(); ++i) {
31 if (arr[i] != b[i]) return false;
35 iterator begin() { return arr[0]; }
36 iterator end() { return arr[s]; }
37 const_iterator begin() const { return arr[0]; }
38 const_iterator end() const { return arr[s]; }
40 value_type arr[s + 1];