2017-07-27 54 views
1

我希望做一个不关心它所接收的可观察类型的扩展函数。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>() 

我想这是一个多rxcpp问题一个C++问题。这可能吗?

+0

只要我知道,我有大约** **模板,**你不能**有一个模板,没有'<>这个问题'通过一些专门化,你可以使用'class <>'等等,但是如果没有'<>'就不能使用它。当然,如果你有一个固定的输入,你可以像'std'中的任何类一样使用'typedef',例如'std :: string'是:'std :: basic_string '带有typedef –

回答

0

您可以使用结构与模板方法:

struct makeones { 
    template <typename Observable> 
    inline observable<int> operator()(Observable s) { 
    return s | rxo::map([=](typename Observable::value_type x) { return 1; }); 
    } 
}; 
相关问题