Создание экземпляра шаблона не типовым параметром

template<typename T, T MIN , T MAX>
struct Range
{
    const T min;
    const T max;
    Range():min(MIN),max(MAX){};
};

template<>
struct Range<float32, MIN, MAX>
{
    typedef float32 T;
    const T min;
    const  T max;
    inline Range():min(MIN),max(MAX){};
};

struct InvalidObject
{
      const Range<uint8, 0U ,2U> numOfPoints ;
};

Я хочу сделать шаблон для диапазона параметров InvalidObject таким же, как показано в struct InvalidObject. Ошибка компилятора в этой структуре struct Range<float32, MIN, MAX> Я хочу сделать это, потому что не могу создать экземпляр в шаблоне диапазона с помощью float. Пожалуйста, посоветуйте, если это применимо.


person ahmed kashef    schedule 16.04.2020    source источник
comment
Типы с плавающей запятой не допускаются как параметры шаблона, не являющиеся типами, только интегралы. IIRC, C ++ 20 позволит им.   -  person Timo    schedule 16.04.2020
comment
Я не эксперт, но полагаю, что для этого потребуется что-то вроде template<float32 MIN, float32 MAX> struct Range<float32, MIN, MAX>, поскольку в противном случае я думаю, что MIN и MAX не определены. (Даже после предположения, что мы можем использовать аргументы без типа с плавающей запятой.)   -  person chi    schedule 16.04.2020