Правильно ли следующее использование функции шаблона fCompare()
?
// заголовок
template<typename _T > class SomeClass
{
typedef int (*COMPAREFUNC)(_T*,_T*);
COMPAREFUNC Compare;
public:
void SetCompareFunction(COMPAREFUNC pfC) { Compare=pfC; }
...
};
template<typename _T > int fCompare(_T *pO, _T *pN)
{
if (pN==NULL) throw (const char*)"Null not allowed";
if (pO!=NULL) return (*pO > *pN)?1:(*pO < *pN)?(-1):0;
return 0;
}
// код
SomeClass<int> aC;
aC.SetCompareFunction(fCompare<int>); // <******* here
...
Меня беспокоит, когда функция экземпляра создается из шаблона: она выглядит как стек, но в другом коде, который я использовал для его тестирования, я пытался забить стек, а Compare()
просто продолжал идти. Могу ли я безопасно использовать такой шаблон?