Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Introducing Reactive Extensions for C++

Introducing Reactive Extensions for C++

This item in japanese


Reactive Extensions for C++, also known as Rx.cpp, is now available for WinRT via C++/CX and OS X via clang. While still in its early stages, a lot of work has been done since the last preview.

Scheduling is a cornerstone of Reactive Extensions. In this release there are five available schedulers including one specifically for Windows’ HWND message loops.

  • Immediate
  • CurrentThread
  • EventLoop
  • NewThread
  • Window

The operators, which are the “async equivalent of STL algorithms” will be familiar to Rx developers: OrderBy, ForEach, Using, Scan, Throttle, TakeUntil, Skip, SkipUntil, ToVector, ToList, Zip, Concat, CombineLatest, Merge, ToAsync, Using, ConnectableObservable, Multicast, Publish, PublishLast, RefCount, ConnectForever, SubscribeOn, ObserveOn.

Special for C++/CX on WinRT are BindCommand, DeferOperation, CoreDispatcherScheduler, FromEventPattern, FromAsyncPattern and ReactiveCommand. The last one comes from Paul Betts’ ReactiveUI.

Here is an example of creating an observable from a range:

//Declare an observable

auto values1 = rxcpp::Range(1, 10);



[](int p) {

cout << p << endl;


The source code for Rx.cpp is available on CodePlex under the Apache License 2.0 license.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p