Честно говоря, я не могу придумать, как много использовать этот тип конструкции, хотя я уверен, что они, вероятно, существуют. Мне кажется, что вы ограничены, потому что n должно эффективно функционировать в глобальной области видимости для f(). Вы могли бы сделать что-то вроде следующего:
#include <iostream>
using namespace std;
template<int &n> void sq(){
n *= n;
}
int something = 10;
int main()
{
cout << something << endl;
sq<something>();
cout << something << endl;
return 0;
}
, но я не могу видеть, что это действительно собирается дать вам, что не может быть достигнуто с помощью функций без шаблона. Может ли sq()
эффективно рассчитать время компиляции?
:). Я должен был быть более осторожным с чтением сообщения об ошибке – Chubsdad