Глянул краем глаза. 1. inline constexpr не имеет смысла, constexpr по стандарту подразумевает inline. Это мелочь, но глаз режет.
2. Для константных данных современные компиляторы хорошо просчитывают на этапе компиляции, только оптимизацию надо не забывать включать.
3. Вместо перегрузки лучше написать шаблон. Переделал ваш reverse_bits. https://godbolt.org/z/h1EEr1sYs
4. Ну и так, поменьше всякой ненужной писанины, типа заведения копии шаблонного параметра внутри класса. Это только осложняет чтение кода. См. там же.
5. Всякого рода таблицы перекодировки лучше сформировать как constexpr объекты constexpr конструктором класса. См пример https://godbolt.org/z/j5q5ax175 Итератор можно выкинуть, но с ним удобнее.
6. constexpr сущности, порождённые из одного типа/класса в разных единицах трансляции компилятор умеет объединять. Не стоит бояться что таблица попадёт в каждый объектный файл. При линковки всё схлопнется.