Ошибка частичной специализации шаблона C ++

Следующий код выдает ошибку компиляции: класс Q64 не является допустимым типом для параметра константы шаблона

template<int GRIDD, class T>
INLINE T grid_residue(T amount) {
  T rem = amount%(GRIDD);
  if (rem > GRIDD/2) rem -= GRIDD;
  return rem;
}


template<int GRIDD, Q64>
INLINE Q64 grid_residue(Q64 amount) {
  return Q64(grid_residue<GRIDD, int64_t>(to_int(amount)));
}

Что не так? Я пытаюсь специализировать grid_residue для класса Q64 .

ОБНОВЛЕНИЕ:

Изменен синтаксис. Теперь появляется ошибка ошибка: частичная специализация шаблона функции 'grid_residue ' не разрешена

template<int GRIDD>
INLINE Q64 grid_residue(Q64 amount) {
    return Q64(grid_residue<GRIDD, int>(to_int(amount)));
}

спасибо

5
задан 5 January 2011 в 11:06
поделиться