Не уверен, как четко сформулировать тему.
Предположим, у меня есть несколько классов функторов, которые предоставляют какой-то метод. Теперь я хочу создать прокси-класс, который будет перенаправлять вызов метода на один из базовых функторов.
например:
template<class F>
class proxy_impl : proxy {
F f;
void method() { f.method(); }
};
template<>
class proxy_impl<void> {
virtual void method() = 0;
};
class proxy {
auto_ptr<proxy_impl<void> > *impl_;
template<class F>
proxy(F f) : impl_(new proxy_impl<F>(f)) {}
void method() {
impl->method();
}
};
Как называется этот шаблон и есть ли в boost реализация?
Причина, по которой функторы не наследуются напрямую, заключается в том, что функторы могут быть чем-то вроде безымянного лямбда-выражения.
Хорошо, похоже, мне нужно что-то вроде boost :: any и boost :: function в одном.