2017-07-27 42 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; }); 
    } 
}; 
相關問題