Slides:
https://github.com/boostcon/cppnow_presentations_2017/blob/master/05-18-2017_thursday/call_a_library_that_will_change_the_way_you_think_about_function_invocations__matt_calabrese__cppnow_05-18-2017.pdfVideo:
https://www.youtube.com/watch?v=hwS0ZvkKuSQDo you use tuples and variants? Do you practice the generic programming paradigm? Do you wish it were easier to deal with multimethods over a closed set of types? Are you interested in or involved with the C++ standard? Do you simply like having your mind blown? If you answered "yes" to any of these questions, then you should attend this presentation!
In this session, I introduce a library that allows users to invoke existing functions and function objects using an argument list whose types and arity may be dynamic both at compile-time and at run-time. Through a single algorithm and a couple of very simple concepts, this library offers a clean and unified generalization of C++17 facilities such as std::invoke, std::apply, std::visit, and more, and does so with an easy-to-write and easy-to-read syntax that the average C++ developer can understand. As with any generic library, the concepts that are presented may be modeled by users, leaving the door open for even more facilities than what is directly offered. Usefulness extends into the realm of higher-level libraries built off of the concepts that are described, and an example of such a library will be explored.
Though the title may be bold, I guarantee that many of you will have a different view of function calls after attending this talk. Consider it a challenge.