Разделение классов на базовые (без шаблонизации размерности) и их
наследники-шаблоны
Почти готовы интерфейсы, почти готова реализация Iterator
В этой версии смысл шаблонов только в явной типизации параметров
алгоритмов: запись вида alg (Range<2>) хорошо читается и сразу понятно,
где может быть ошибка при выхове.
К тому же для частных спецификаций можно сделать удобные и читаемые
методы, например, Range<1> Range<2>::row(int n) вместо sect ().
Подразумевается, что Row и Table будут сделаны тупо typedef-ом.
Базовые классы StorageRef и RangeRef с динамической размерностью
позволяют для одного и того же неизменного Storage делать Range разных
размерностей, а также упрощают работу Iterator.
Итераторы выглядят готовыми
Range почти дописан
Не тестировалось ничего вообще никак
добавил примеры