Work
Programming and C++ standardization work: conference presentations, WG21 papers, and related projects.
Conference Talks
C++Now
-
2023 — Async Control Flow: sender/receiver, the continuation monad, and how
std::executionstructures asynchronous work.
CppCon
WG21 Papers
Selected papers where I was primary author or a significant contributor. All links resolve to the current head revision at wg21.link.
Active and Accepted
-
P2988 — std::optional<T&> (with Peter Sommerlad).
Gives
optionalreference semantics that rebind on assignment, closing a long-standing gap in the vocabulary type. Currently in flight for C++26. -
P1255 — views::nullable and a concept to constrain maybes.
A view adaptor for types that are 0-or-1 elements:
optional, pointers, and anything satisfying themaybeconcept. - P3913 — Optimize for std::optional in range adaptors (with Tomasz Kamiński).
- P3836 — Make optional<T&> trivially copyable (with Jan Schultke and Nevin Liber).
- P3574 — Constexpr Callables.
- P3473 — Splicing Should Respect Access Control.
- P3717 — Update Annex E onto Unicode 16.
Accepted and Shipped
- P1949 — C++ Identifier Syntax using Unicode Standard Annex 31 (with Zach Laine, Tom Honermann, Peter Bindels, Jens Maurer). Adopted for C++23. Restricts identifiers to UAX #31 profiles, removing a long tail of confusable characters.
- P2558 — Add @, $, and ` to the basic character set. Adopted for C++26.
-
P2071 — Named universal character escapes (with Tom Honermann, Peter Bindels, Corentin Jabot, R. Martinho Fernandes).
Adopted for C++23.
\N{SNOWMAN}is now valid in string literals. - P2301 — Add a pmr alias for std::stacktrace. Adopted for C++23.
- P2540 — Empty Product for certain Views.
- P2787 — pmr::generator — Promise Types are not Values.
- P1025 — Update The Reference To The Unicode Standard (with JeanHeyd Meneide, Martinho Fernandes). Adopted for C++20.
Direction and Analysis
- P1988 — Allow Templates in Local Classes.
- P2653 — Update Annex E based on Unicode 15.0 UAX 31.
- P3199 — Choices for makeoptional and value().
- P3276 — P2900 Is Superior to a Contracts TS (with Joshua Berne, Jake Fevold, Mungo Gill, Rostislav Khlebnikov, John Lakos, Alisdair Meredith).
- P1439 — Charset Transcoding, Transformation, and Transliteration.
- P1253 — Guidelines for when a WG21 proposal should be reviewed by SG16.
- P1254 — Notes on C++ Package Management.
- P1859 — Standard terminology for execution character set encodings.
Projects
- trees — Functional data structures in C++: finger trees, fixpoint trees, typeclass objects.
- wg21org — Emacs org-mode tooling for writing WG21 papers.
-
optionalref — Reference implementation for P2988
std::optional<T&>.