Забыл про эти шаблоны вообще последнее что помнил. Как бы решить подобную задачку попроще?
C++ (Qt)
struct A
{
char array[256];
template<typename T> T Blend(T*source, int step)
{
T result;
/*doing something with array, source and step and storing in result */
return (T)floor(result); //Here the difference!!!
}
template<> double Blend<double>(double*source, int step)
{
double result;
/*doing something with array, source and step and storing in result */
return result; //Here the difference!!!
}
};
Разумеется, при сборке gcc 3.4.5 получаю:
P:\projects>gcc 2.cpp
2.cpp:12: error: explicit specialization in non-namespace scope `struct A'
2.cpp:13: error: template-id `Blend<double>' for `double Blend(double*, int)' does not match any template declaration
2.cpp:13: error: invalid function declaration
Можно ли вообще по стандарту реализовывать подобную специализацию, и если да - то в чем я ошибаюсь, а если нет - как попроще можно сделать подоный трюк?