Можно ли присвоить значение параметру нетипичного шаблона?
Например
template<int N>
void foo(){
N = 4;
}
Пытаясь скомпилировать это, я получаю:
error: lvalue required as left operand of assignment
N = 4;
^
Какие значения (категория значений) являются параметрами шаблона и сколько я могу «поиграть с ними» в теле функций? (Т.е. их чтение, запись в них, пересылка их другим параметрам шаблона, печать их и т. Д.).
Например, как правильно создать шаблон функции, который «регистрирует» число (передается как параметр шаблона во время компиляции), а затем печатает это число каждый раз, когда он вызывается (во время выполнения)?