C++Now 2018 has ended
Back To Schedule
Wednesday, May 9 • 4:30pm - 6:00pm
Argot: Simplifying Variants, Tuples, and Futures

Log in to save this to your schedule, view media, leave feedback and see who's attending!

Feedback form is now closed.
If you have worked with tuples, variants, and futures in C++, you may frequently find yourself frustrated with how complicated it can be to get seemingly simple things done, especially if coming from a language with more direct support for algebraic datatypes. Expanding tuples in anything but trivial ways requires being something of a language expert. Visiting variants can often be even worse. Forming chains of ".then" continuations (if you even have a ".then") can be a drag. These are supposed to be powerful, useful abstractions, yet they are often too complicated for most programmers.

The Argot library aims to solve some of these problems by acting as something like an <algorithm> or <utility> but for dealing with TupleLike, VariantLike, and now FutureLike concepts and the expansions of their underlying values into function arguments. Easily perform what would otherwise be complicated variant visitation. Expand tuples in more powerful ways than with std::apply. Form continuations with futures without explicitly writing complicated .then() chains. Do things that you may not have thought were possible.

This talk is on an updated and re-named version of a library from the C++ Standard proposal "A Single Generalization of std::invoke, std::apply, and std::visit" ( http://wg21.link/p0376 ). The library is planned to be added to the boost review queue sometime later this year.

avatar for Matt Calabrese

Matt Calabrese

Software Engineer, Google
Matt Calabrese is a software engineer working primarily in C++. He started his programming career in the game industry and is now working on libraries at Google. Matt has been involved with the Boost community for over a decade and is currently a member of the Boost Steering Committee... Read More →

Wednesday May 9, 2018 4:30pm - 6:00pm MDT
Hudson Commons