Впервые я использую шаблоны и указатель на функции-члены одновременно, и я наткнулся на следующую проблему.
Я объявил struct Proxy для typedef, поскольку шаблоны и typedefs не работают вместе (я знаю, что это должно быть возможно в C ++ 11, хотя MSVC ++ не принимает его).Теперь я хочу объявить шаблонную (!) Функцию, которая использует прокси с типом шаблонов.Это то, что вызывает ошибку при компиляции.Пожалуйста, посмотрите на (упрощенный) код ниже, я добавил несколько примеров, чтобы прояснить проблему.
Я работаю со стандартом VC ++ 2010 (без CLR / CLI).
template<typename T>
struct Proxy
{
typedef bool (CClass::*MethodPtr)(const T* const objectX);
}
class CClass
{
// warning: dependent name is not a type
// error:: Method can not be a template definition
template<typename T>
bool Method( Proxy<T>::MethodPtr );
// this works, but i want to specify T instead of int of course
template<typename t>
bool method( Proxy<int>::MethodPtr );
// this is what i use
template<typename T>
bool Method( bool (CClass::*MethodPtr)(const T* const objectX) );
}
template<typename T>
bool CClass::Method( bool (CClass::*MethodPtr)(const T* const objectX) )
{
// next line compiles without problems
Proxy<T>::MethodPtr ptr2;
}