So several months ago, we started considering ongoing directions for evolving the C++ API. Certainly, a major concern was that it is difficult to use the async CQ-based API. If you've been following the repo recently, though, you see that we're headed in a direction of a callback-based API.
As much as some of us (including me) wanted to base a system on futures, there hasn't yet been an acceptance of the C++ concurrency TS into an ISO standard for C++, and the C++11 futures API is just too limited to be practical. We also considered using futures from an external library but were concerned about not only introducing an extra dependence but also the likelihood that that would lead to a bifurcation in development practices when a reasonable future implementation reaches the C++ standard.
So, among the options that we considered, the callback-based API seemed most practical, usable, and ready for use. That said, it's still experimental for the time being, with a plan of making it generally available in the next few months. In the meanwhile, please feel free to look over the API and tests.
- Vijay