Как отмечает @Kerrek SB, я не уверен, что есть такое большое преимущество использования float
с над double
с.
Я не могу сказать однозначно, не увидев ваш код, но выможет быть в состоянии делать то, что вы хотите с шаблонами.
template <typename T>
T Crunch1(T rhs)
{
// do something with 'rhs' and return the result
}
template <typename T>
T Crunch2(T lhs, T rhs)
{
// do something with 'lhs' & 'rhs' and return the result
}
Это все еще время компиляции, а не полиморфизм времени выполнения, но может быть ближе всего к тому, что вы хотите.
И вы можете создать серию плагинов (по одному для каждой желаемой точности) и выбрать их во время выполнения, как вы предлагаете.Каждый плагин был бы экземпляром кода шаблона для определенной точности.Сочетание шаблонов и архитектуры плагинов даст вам необходимую гибкость без дублирования кода, которого вы явно пытаетесь избежать.