Abstract
Effect handlers allow the programmer to implement computational effects, such as custom error handling, various forms of lightweight concurrency, and dynamic binding, inside the programming language. We introduce cpp-effects, a C++ library for effect handlers with a typed high-level, object-oriented interface. We demonstrate that effect handlers can be successfully applied in imperative systems programming languages with manual memory management. Through a collection of examples, we explore how to program effectively with effect handlers in C++, discuss the intricacies and challenges of the implementation, and show that despite its limitations, cpp-effects performance is competitive and in some cases even outperforms state-of-the-art approaches such as C++20 coroutines and the libmprompt library for multiprompt delimited control.
Author supplied keywords
Cite
CITATION STYLE
Ghica, D., Lindley, S., Bravo, M. M., & Piróg, M. (2022). High-level effect handlers in C++. Proceedings of the ACM on Programming Languages, 6(OOPSLA2). https://doi.org/10.1145/3563445
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.