rxcpp简单可观察<;int>; 我在C语言中用RX编程,现在我希望用C++中的RXCPP编程。 我正在尝试做最简单的事情,定义一个类成员变量observable 问题在于,可观察的被定义为: template<class T, class SourceOperator> class observable

rxcpp简单可观察<;int>; 我在C语言中用RX编程,现在我希望用C++中的RXCPP编程。 我正在尝试做最简单的事情,定义一个类成员变量observable 问题在于,可观察的被定义为: template<class T, class SourceOperator> class observable,c++,system.reactive,reactive-programming,rxcpp,C++,System.reactive,Reactive Programming,Rxcpp,我发现observale是返回类型,但找不到它的定义。 太奇怪了。老实说,我认为我相当精通c++11\14和元编程。。。显然,兔子洞可以变得更深:-( 更新1: 已找到观测值:-) 其在rx-predef.hpp中: template<class T = void, class SourceObservable = typename std::conditional<std::is_same<T,void>::value, void

我发现
observale
是返回类型,但找不到它的定义。
太奇怪了。老实说,我认为我相当精通c++11\14和元编程。。。显然,兔子洞可以变得更深:-(

更新1:
已找到观测值:-) 其在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;
template<class T = void,
         class SourceObservable = typename std::conditional<std::is_same<T,void>::value,
           void, 
           dynamic_observable<T>>::type>
class observable;
模板
类可观测;
o、 k.我目前的猜测是,
dynamic_observable
意味着一个“规则的”
observable
是一个动态的、基于类型的T流。 这是合乎逻辑的,因为您只能将擦除的流作为显式类型的变量重新键入。
是什么让我想到了下一个猜测,
template class observable
的语法支持创建从(编译时装饰)中的其他observable组合而来的observable类型。我们发现了一些类似于示例的

observale
的东西:-) 其在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;
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流。 这是合乎逻辑的,因为您只能将擦除的流作为显式类型的变量重新键入。

template class observable
的语法允许创建与(编译时装饰)中的其他observable组合的observable类型。类似于例证的东西,这很奇怪。页面上的示例定义了几个变量,但没有指定
SourceOperator
observable
observable
。这方面的文档非常糟糕。到处使用
SourceOperator
,但不解释其含义。绝对不是我在私人玩具项目之外使用的东西。是的,更新1是正确的!在C++中,默认是让编译器看到完整的静态类型,并将所有运算符一起折叠以实现性能。SourceOperator是泛型observable类型所持有的observable的完整类型。observable上的as_dynamic()方法将返回类型erased observable,这会增加虚拟函数调用开销和堆分配开销,默认情况下可以避免这些开销。@ChristianHackl欢迎所有贡献,尤其是文档改进。为了信任rxcpp,甚至为您需要涵盖的主题添加一个问题都是有价值的。