Общее числовое программирование использует шаблоны для использования одного и того же кода для различных типов и функций с плавающей запятой. Рассмотрим область окружности a радиуса r, данную
Область круга может быть вычислена в общем программировании с использованием Boost. Математика для константы π как показано ниже:
#include <boost/math/constants/constants.hpp>
template<typename T>
inline T area_of_a_circle(T r)
{
   using boost::math::constants::pi;
   return pi<T>() * r * r;
}
Можно использовать<area_of_a_circle()>со встроенными типами плавающих точек, а также с типами плавающих точек от Boost. Многоточность. В частности, рассмотрим систему с 4-байтовым одноточным поплавком, 8-байтным двухточным двойным, а также типом данных<cpp_dec_float_50>от Boost. Многоточность с 50 десятичными цифрами точности.
Мы можем вычислить и распечатать приблизительную площадь круга с радиусом 123/100 для<float>,<double>и<cpp_dec_float_50>с помощью программы ниже.
#include <iostream>
#include <iomanip>
#include <boost/multiprecision/cpp_dec_float.hpp>
using boost::multiprecision::cpp_dec_float_50;
int main(int, char**)
{
   const float r_f(float(123) / 100);
   const float a_f = area_of_a_circle(r_f);
   const double r_d(double(123) / 100);
   const double a_d = area_of_a_circle(r_d);
   const cpp_dec_float_50 r_mp(cpp_dec_float_50(123) / 100);
   const cpp_dec_float_50 a_mp = area_of_a_circle(r_mp);
   
   std::cout
      << std::setprecision(std::numeric_limits<float>::digits10)
      << a_f
      << std::endl;
   
   std::cout
      << std::setprecision(std::numeric_limits<double>::digits10)
      << a_d
      << std::endl;
   
   std::cout
      << std::setprecision(std::numeric_limits<cpp_dec_float_50>::digits10)
      << a_mp
      << std::endl;
}
В следующем примере мы рассмотрим вызов как стандартной библиотеки, так и Boost. Математические функции внутри общего кода. Мы также покажем, как справляться с аргументами шаблонов, которые являются шаблонами выражений, а не типами чисел.