Skip to main content

Work

· 2 min read

Work

Programming and C++ standardization work: conference presentations, WG21 papers, and related projects.

Conference Talks

C++Now

  • 2023Async Control Flow: sender/receiver, the continuation monad, and how std::execution structures asynchronous work.

    Slides (on this blog)

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

  • P2988std::optional<T&> (with Peter Sommerlad). Gives optional reference semantics that rebind on assignment, closing a long-standing gap in the vocabulary type. Currently in flight for C++26.
  • P1255views::nullable and a concept to constrain maybes. A view adaptor for types that are 0-or-1 elements: optional, pointers, and anything satisfying the maybe concept.
  • P3913Optimize for std::optional in range adaptors (with Tomasz Kamiński).
  • P3836Make optional<T&> trivially copyable (with Jan Schultke and Nevin Liber).
  • P3574Constexpr Callables.
  • P3473Splicing Should Respect Access Control.
  • P3717Update Annex E onto Unicode 16.

Accepted and Shipped

  • P1949C++ 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.
  • P2558Add @, $, and ` to the basic character set. Adopted for C++26.
  • P2071Named 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.
  • P2301Add a pmr alias for std::stacktrace. Adopted for C++23.
  • P2540Empty Product for certain Views.
  • P2787pmr::generator — Promise Types are not Values.
  • P1025Update The Reference To The Unicode Standard (with JeanHeyd Meneide, Martinho Fernandes). Adopted for C++20.

Direction and Analysis

  • P1988Allow Templates in Local Classes.
  • P2653Update Annex E based on Unicode 15.0 UAX 31.
  • P3199Choices for makeoptional and value().
  • P3276P2900 Is Superior to a Contracts TS (with Joshua Berne, Jake Fevold, Mungo Gill, Rostislav Khlebnikov, John Lakos, Alisdair Meredith).
  • P1439Charset Transcoding, Transformation, and Transliteration.
  • P1253Guidelines for when a WG21 proposal should be reviewed by SG16.
  • P1254Notes on C++ Package Management.
  • P1859Standard 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&>.