RXCPP: создайте расширение, которое не заботится о типе ввода наблюдаемой

Я хочу сделать функцию расширения, которая не заботится о типе наблюдаемого, который она получает.

Например:

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. Возможно ли это сделать?

1 ответ

Вы можете использовать структуру с шаблонным методом:

struct makeones {
  template <typename Observable>
  inline observable<int> operator()(Observable s) {
    return s | rxo::map([=](typename Observable::value_type x) { return 1; });
  }
};
Другие вопросы по тегам