Для чего-то такого простого, компилятор , вероятно, сделает это во время компиляции.Фактически, компилятор, вероятно, сделает это во время компиляции, даже без шаблонов, при условии, что все значения известны во время компиляции: то есть, если у нас есть inline float fraction(int A, int B)
, он, вероятно, выполнит деление при компиляциивремя, если мы вызовем fraction(1,2)
.
Если вы хотите заставить заставить компилятор делать вещи во время компиляции, вам придется использовать некоторые приемы метапрограммирования шаблонов, а я неуверен, что вы можете заставить его работать с арифметикой с плавающей точкой вообще.Но вот базовый пример техники:
// Something similarly simple that doesn't use floating-point ;)
template <int A, int B>
struct Product {
enum { value = A * B };
};
// Later:
... Product<3, 4>::value ...