У меня есть шаблонный класс с целыми числами в качестве аргументов. Один статический const integer (назовем его Length
) этого класса должен быть рассчитан на основе аргументов. Для вычисления нужен цикл (насколько я знаю), поэтому простое выражение не поможет.Инициализировать static const int со статической функцией
static int setLength()
{
int length = 1;
while (length <= someTemplateArgument)
{
length = length << 1;
}
return length;
}
Возвращенная длина должна использоваться для инициализации Length
. Length
используется как фиксированная длина массива, поэтому мне нужно, чтобы он был постоянным.
Есть ли решение этой проблемы? Я знаю, что constexp может помочь, но я не могу использовать C11 или более позднюю версию.
Конечно, вы можете сделать некоторые шаблонный метапрограммирования, чтобы получить постоянное право. Я лично не вникаю в детали этого, потому что я думаю, что шаблон-метапрограммирование - это жестокость, которую лучше избегать, но это, безусловно, возможно. – cmaster