Если битовая глубина не является постоянной времени компиляции, у вас есть два варианта:
1) использовать объекты реализации переменных времени выполнения (реализации могут быть сгенерированы с использованием шаблонов, а не полиморфизма времени выполнения, но для их использования необходимо ввести erase для виртуального интерфейса или включить битовую глубину времени выполнения , для того, чтобы выбрать среди них).
2) сделать так, чтобы все вызывающие функции принимали битовую глубину в качестве параметра шаблона, вплоть до некоторого уровня, на котором вы выполняете вышеуказанную переменную времени выполнения -> конкретное отображение шаблона битовой глубины (по крайней мере, в основном вам придется это делать)
Да, вы можете иметь (постоянные) целочисленные аргументы шаблона и частичную специализацию для них.