Частично специализировать указатели методов внутри шаблона - PullRequest
2 голосов
/ 24 декабря 2010

Я пытаюсь реализовать свойства с поведением только для чтения, записи и только для чтения.Я подумал, что здесь можно пойти по специализации шаблонов, поэтому я попробовал это:

template<typename Class, typename Type, void (Class::*Set)(Type), Type (Class::*Get)(void)>
class Property;

template <typename Class, typename Type, Type (Class::*Get)(void)>
class Property<Class, Type, NULL, Get>
{
  ...
}

Это не работает и выдает ошибку компилятора (VC): частичная специализация не может иметь зависимый не типпараметр шаблона.

Я здесь потерян, это вообще возможно?

Спасибо за ваше время, Ричард.

1 Ответ

1 голос
/ 28 декабря 2010

вы можете использовать менее специализированный подход, как:

template<typename Class, typename Type, typename Get_functor, typename Set_functor>
class Property;

template <typename Class, typename Type, typename Get_functor>
class Property<Class, Type, NULL, Get_functor>
{
  ...
}
...