Дано:template<class type, void (type::*fun)()> class caller
{
type *ptr;
public:
caller(type *p) : ptr(p) {}
void operator()()
{
(ptr->*fun)();
}
};
Вопрос: можно ли переписать это дело так, чтобы вызов метода происходил напрямую, без использования указателей на члены:
ptr->fun() ?
Думается мне, что нельзя, во всяком случае, напрямую написать что-нибудь вроде
template<class type, void (type::fun)()> или
template<class type, void (type::&fun)()> не получится... Но вдруг?..