Список параметров шаблона не работает так. Параметры шаблона должны быть одним из следующих: имена типов, типы (с ограничениями) или шаблоны.
Может быть, вы хотите иметь тип по умолчанию, например?
template <class T,
class Object,
typename U = T (Object::*real_getter)()>
class ...
Здесь U
по умолчанию - указатель на функцию-член, но вы должны предоставить полную подпись, включая тип возвращаемого значения.
Или вы хотите, чтобы real_getter
был членом typedef?
template <class T, class Object>
class ReadOnlyProperty
{
typedef typename T (Object::*real_getter)();
//...
};
Или, как подсказывает @jmihalicza, вам нужен параметр значения типа T (Object::*)()
?
template <class T, class Object, T (Object::*real_getter)()>
class ReadOnlyProperty
{ //...
};