Это может быть сложно. Я использовал шаблонный подход в моем докторском диссертационном коде, работающем с различными числовыми типами. Возможно, вы захотите взглянуть на него, чтобы увидеть проблемы, с которыми я столкнулся.
Дело в том, что с тобой все в порядке, если все, что ты делаешь со своими числами, это используй стандартные арифметические операторы. Однако, как только вы используете квадратный корень или какую-либо другую неоператорную функцию, вам нужно создать вспомогательные объекты для определения типа вашего объекта (во время компиляции, поскольку это слишком медленно, чтобы делать это во время выполнения; обратитесь за помощью к библиотеке расширенного метапрограммирования). на что), а затем вызвать правильную функцию и вернуть его как правильный тип. Это все вполне выполнимо, но, вероятно, займет больше времени, чем вы думаете, и значительно увеличит сложность вашего кода.
По своему опыту (я использовал GMP, которая должна быть самой быстрой библиотекой произвольной точности, доступной для C ++) после всех моих усилий и сложности, я обнаружил, что GMP был слишком медленным для тех вычислений, которые я делал; так что это было академически интересно, но практически бесполезно. Прежде чем начать, сделайте несколько тестов скорости, чтобы увидеть, будет ли ваша библиотека по-прежнему пригодна для использования, если вы используете арифметику произвольной точности.