Шаблон функции как параметр шаблона
От: Аноним  
Дата: 24.01.04 22:27
Оценка:
Доброе время суток.

Я работаю с CodeWarrior 8.3 на Macintosh и столкнулся с такой проблемой: как передать шаблон функции как параметр шаблона другой функции или класса?
Немного истории . Есть правильно работающий код:


// TList - Loki::Typelist<>
// конвертирует тип из списка типов в адрес конкретизации 
// функции FunctionsOwner::Function1 этим типом
template <class TList, class FunctionsOwner>
struct TypeListToFunctionMap
{
  void Convert(FunctionsOwner::Map& map)
  {
    ...
    typedef TList::Head SomeType;
    map[i] = &FunctionsOwner::Function1<SomeType>;
    ....
  }
};

class CFunctionsOwner
{
  publuc:
     typedef void (CFunctionsOwner::*TMapElement)();
     TMapElement m_Map[10];
     template <typename T>
     void Function1()
     {
       ...
     }
};



Вызов такой:

CFunctionsOwner functions;
TypeListToFunctionMap<MyList, CFunctionsOwner>::Convert(functions.m_Map);


Все было хорошо, пока не понадобилась map для другой функции Function2(). Хотелось бы получить что-то такое:

TypeListToFunctionMap<MyList, CFunctionsOwner::Function1>::Convert(functions.m_Map1);
TypeListToFunctionMap<MyList, CFunctionsOwner::Function2>::Convert(functions.m_Map2);


Но компилятор ругается по поводу CFunctionsOwner::Function1 — declaration syntax error
Отсюда вопрос: возтожно ли вообще передать как паратетр шаблона неконкретизированный шаблон функции (с шаблоном класса все котпилируется )?

Заранее благодарен, Сергей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.