Я работаю с библиотекой, которая предоставляет интерфейс для работы. Одна из функций этой библиотеки такова:
template <int a>
void modify(){}
Мне нужно изменить параметры от 1 до 10, т.е. вызвать modify
с аргументами шаблона от 1 до 10. Для этого я написал этот код (базовая версия кода, фактический код намного больше).
for(int i=0; i<10; i++){
modify<i>();
}
При компиляции я получаю следующую ошибку
error: 'i' cannot appear in constant-expression
После прохождения некоторых ссылок в Интернете я узнал, что не могу передать какое-либо значение в качестве аргумента шаблона, который не оценивается во время компиляции.
Мой вопрос таков:
1. Почему компилятор не может оценить i
во время компиляции?
2. Есть ли какой-либо другой способ достичь цели, которую я пытаюсь достичь, не меняя интерфейс API?
Есть еще одна вещь, которую я хочу сделать. Вызовите изменение в качестве модификации, где VAR является результатом некоторого функционального вычисления. Как я могу это сделать?