Чтобы реализовать Блок с плавающей точкой , я использую следующую структуру в своем коде:
struct ff32{
int16_t _exp;
int32_t _frac;
ff32(int16_t e, int32_t f)
: _exp(e), _frac(f)
{};
};
Я могу создать переменные этого типа структуры и инициализировать их следующим образом:
ff32 x(2, 0x60000000);
ff32 y = {2, 0x60000000};
Я хотел бы расширить конструктор, включив в него тип данных с плавающей запятой, следующим образом:
struct ff32{
int16_t _exp;
int32_t _frac;
ff32(int16_t e, int32_t f)
: _exp(e), _frac(f)
{};
ff32(float x)
{
// some code that extract _exp and _frac
// for a given floating-point number x
};
};
Я уже реализовал тело конструктора ff32 (float x), но яне хочу, чтобы этот код выполнялся во время выполнения для постоянных аргументов с плавающей запятой, например, ff32 (2.7f).Возможно ли достичь этого с помощью какого-либо метапрограммирования?Следует также отметить, что моя цепочка инструментов поддерживает только C ++ 11.