Я хотел бы попросить вас помочь с определением частично специализированной функции-члена класса... пусть код объяснит больше:
У меня есть объявление общего класса:
template<typename GEAR_TYPE, typename ENABLER = void>
class PartiallySpecializedClass;
Затем я пытаюсь частично специализировать класс, используя boost::enable_if
template<typename TYPE_LIST, typename QUERY_TYPE>
struct IsTypeInList
{
typedef typename boost::mpl::find<TYPE_LIST, QUERY_TYPE>::type TypePos;
typedef typename boost::mpl::end<TYPE_LIST>::type Finish;
typedef typename boost::mpl::not_<boost::is_same<TypePos, Finish> >::type type;
typedef typename type::value_type value_type;
static const bool value = type::value;
};
template<typename GEAR_TYPE>
class PartiallySpecializedClass<GEAR_TYPE, typename boost::enable_if<typename IsTypeInList<InvoluteToothTypes, GEAR_TYPE>::type >::type >
{
public:
void Test( void );
};
Если я попытаюсь определить метод в самом объявлении класса, он отлично работает. Но проблемы возникают, когда я пытаюсь определить их в отдельном файле .cpp:
template<typename GEAR_TYPE>
void PartiallySpecializedClass< /* WHAT TO PLACE HERE???? */ >::Test( void )
{
}
Возможно ли вообще определить метод-член частично специализированного класса в отдельном файле .cpp?
Заранее большое спасибо всем, кто попытается помочь мне с этой темой. Я надеюсь, что это может помочь кому-то еще, у кого такой же кошмар, как у меня :о)