3

我在 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启用创建可观察类型的语法与“装饰器”模式中的其他可观察对象组合(编译时装饰)。像这里举例的东西

4

1 回答 1

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表示 a observable<T>,它是 T 的动态类型擦除流。这是合乎逻辑的,因为您只能将类型擦除流作为具有显式类型的变量。启用从“装饰器”模式(编译时装饰)中的其他可观察对象组合创建可观察类型
的语法。像这里举例的东西template<class T, class SourceOperator> class observable

于 2017-08-13T16:18:43.813 回答