Я хочу сделать функцию расширения, которая не заботится о типе наблюдаемого, который она получает.
Например:
template <typename T>
inline auto makeones() -> function<observable<int>(observable<T>)>
{
return [=](observable<T> s) {
return s | rxo::map([=](auto x) { return 1; })
};
}
Я хотел бы иметь возможность вызывать этот метод без указания шаблона, если это возможно.
Например:
stream | makeones()
в отличие от
stream | makeones<myType>()
Я полагаю, что это больше вопрос c ++, чем вопрос rxcpp. Возможно ли это сделать?
Вы можете использовать структуру с шаблонным методом:
struct makeones {
template <typename Observable>
inline observable<int> operator()(Observable s) {
return s | rxo::map([=](typename Observable::value_type x) { return 1; });
}
};
Других решений пока нет …