8 template <class T, size_t s>
12 typedef size_t size_type;
14 typedef T const * const_pointer;
15 typedef T & reference;
16 typedef T const & const_reference;
18 typedef T const * const_iterator;
19 size_type size() const { return s; }
20 operator T* () { return arr; }
22 Assert(i >= 0 && i < s);
25 const_reference at(int i) const {
26 Assert(i >= 0 && i < s);
29 reference operator[](int i) { return arr[i]; }
30 const_reference operator[](int i) const { return arr[i]; }
31 void operator=(block const & b) {
32 Assert(b.size() == size());
33 for (size_t i = 0; i < size(); ++i) {
37 bool operator==(block const & b) const {
38 Assert(b.size() == size());
39 for (size_t i = 0; i < size(); ++i) {
40 if (arr[i] != b[i]) return false;
44 iterator begin() { return arr[0]; }
45 iterator end() { return arr[s]; }
46 const_iterator begin() const { return arr[0]; }
47 const_iterator end() const { return arr[s]; }