Прошу прощения за столь большой вопрос, но я столкнулся с другой проблемой, не знаю, как решить ... Из того, что я понял, gcc не удается разрешить myComparator тип класса, вероятно, потому что следующий код не соответствует стандарту.Вопрос в том, что я что-то упустил или есть обходной путь для этой проблемы, который не потребовал бы слишком больших изменений (например, решение интерфейсов) ...
template <typename DATA> class myArray
{
template <typename F> void sort (F &comp)
{
// No problems here
}
template <typename T> void sort(void)
{
T::myComparator cmp; //Error: expected `;' before 'zzz'
// T::template myComparator cmp; also doesn't work
sort(cmp);
}
};
class test
{
public:
class myComparator
{
public:
bool operator() ( const test *t1, const test * t2)
{
// No problems here
}
};
};
void testCmp()
{
myComparator cmp;
cmp.sort<test>();
}