Проблема с T one
и 1.0
в списке аргументов шаблона.
У вас не может быть нетипизированного параметра шаблона типа с плавающей запятой, и вы не можете передать значение с плавающей запятой в качестве аргумента шаблона. Это просто не разрешено (насколько мне известно, на самом деле нет веских причин, по которым это не разрешено).
Сообщение об ошибке
g ++ здесь довольно бесполезно. Visual C ++ 2010 сообщает следующее в строке, где шаблон используется в main
:
error C2993: 'double' : illegal type for non-type template parameter 'one'
Comeau Online отчеты:
line 13: error: expression must have integral or enum type
double d = exponentiel<double,1.0>(2.0f,3);
^
line 2: error: floating-point template parameter is nonstandard
template <typename T, T one>
^