Я пытаюсь написать класс, который включает в себя переменную, тип которой будет выбран как наименьшая возможная возможность содержать значение.
Что я имею в виду:
class foo {
"int type here" a;
}
Я столкнулся с Автоматически выбираю тип переменной, достаточно большой для хранения указанного номера. Из-за трудностей с использованием библиотеки boost я пошел дальше и использовал предложения шаблонов.
Это превращает код в:
template<unsigned long long T>
class foo {
SelectInteger<T>::type a;
}
Однако моя проблема возникает из-за того, что размер переменной является результатом умножения переменной с плавающей запятой и целого числа. Поэтому я хотел бы иметь возможность:
template<unsigned long long T, double E>
class foo {
SelectInteger<T*E>::type a;
}
Но так как шаблоны не работают с переменными с плавающей запятой (см. здесь), я не могу передать E
в шаблон. Есть ли другой способ передать переменную (которая должна быть доступна во время компиляции) классу?