我在 C# 中使用 RX 进行编程,现在我希望在 C++ 中使用 rxcpp 进行编程。我正在尝试做最简单的事情,定义一个类成员变量observable<int>
。
问题是observable
定义为:
template<class T, class SourceOperator>
class observable
是什么SourceOperator
?
我如何定义一个简单的observable<int>
?
查看代码时,在 rx-observable.hpp(第 101 行):
template<class T, class Source>
observable<T> make_observable_dynamic(Source&& s) {
return observable<T>(dynamic_observable<T>(std::forward<Source>(s)));
}
我找到observale<T>
作为返回类型,但找不到它的定义。
太奇怪了。老实说,虽然我非常精通 c++11\14 和元编程......显然兔子洞可以变得更深:-(
更新 1:
observale<T>
已找到 :-) 它在 rx-predef.hpp 中:
template<class T = void,
class SourceObservable = typename std::conditional<std::is_same<T,void>::value,
void,
dynamic_observable<T>>::type>
class observable;
好的,我目前的猜测是,这dynamic_observable
意味着“常规”observable<T>
是 T 的动态、类型擦除流。这是合乎逻辑的,因为您只能将类型擦除流作为具有显式类型的变量。
是什么让我想到了下一个猜测,即template<class T, class SourceOperator> class observable
启用创建可观察类型的语法与“装饰器”模式中的其他可观察对象组合(编译时装饰)。像这里举例的东西