Цитата
Прерывания придется делать вне класса, в виде обычных функций (в количестве 2х штук), и вызывать уже внутри них метод Timer_IRQ из конкретного класса
Делал - говорю-ж - криво выходит. Во первых обработчики всегда будут существовать - т.е. при попытке задействовать другой обработчик линковщик ругается на два определения обработчика.
Во вторых - изначально собирался ввести еще один аргумент шаблона: "функцию" таймера - выставление флага (SIGNAL_TIMER) или вызов процедуры (PROC_TIMER). А это уже другие действия в обработчике. Т.е. уже четыре обработчика. А тут уже никак. Через один универсальный шаблон все очень компактно и красиво получилось. Кроме того, что обработчиков прерываний в коде нет

Цитата
Прерывания придется делать вне класса, в виде обычных функций (в количестве 2х штук), и вызывать уже внутри них метод Timer_IRQ из конкретного класса
А, я несколько не так понял. Так, должно получиться. И наверное даже компилятор подставновку сделает (т.е. не будет лишнего вызова). Проблема тогда только в том, что бы как-нибудь "красиво" задать обработчик - т.е. как бы дистанцируясь от аппаратуры (не могу объяснить

в общем есть файл hardware.h, в котором определена вся аппаратура, и далее в программе никаких прямых упоминаний аппаратуры нет. Тут так не выйдет - надо будет где-то задать конкретный обработчик конкретного прерывания, что сразу свяжет программу с аппаратурой, чего хочется избежать.
Цитата
Еще замечание - использование огмоного количества констант, выбираемых по параметру шаблона, не есть гуд

А почему? Компилироваться долго будет?