template <float number>
struct Value
{
static const float VALUE = number;
};
The crazier part is that they have allowed enough other syntax sugar that you can fake it.. So why not just support it in the first place??
#include <iostream>
template <int NUM, int DEN>
struct Float
{
constexpr static float value() { return (float)NUM / (float)DEN; }
static constexpr float VALUE = value();
};
template <class GRAD, class CONST>
struct LinearFunc
{
static float func(float x) { return GRAD::VALUE*x + CONST::VALUE; }
};
int main()
{
// Y = 0.333 x + 0.2
// x=2, y=0.866
std::cout << " func(2) = "
<< LinearFunc<Float<1,3>, Float<1,5> > ::func(2) << std::endl;
}