The Committee: WG21
The ISO C++ committee is called WG21, officially ISO/IEC JTC1 (Joint Technical Committee 1) / SC22 (Subcommittee 22) / WG21 (Working Group 21). WG21 was formed in 1990-91, and consists of accredited experts from member nations of ISO/IEC JTC1/SC22 who are interested in C++ work.
The WG21 officers are:
- Convener: Herb Sutter (Microsoft). The convener chairs the WG, sets the WG meeting schedule ("convenes" meetings), appoints Study Groups, and is responsible to higher levels of ISO (SC22, JTC1, and ITTF) for the WG's work.
- Project Editor: Richard Smith (Google). The project editor is the person ultimately responsible for applying committee-approved changes to the standard's working draft.
- Secretary: Nina Ranns. The secretary is responsible for taking and distributing minutes of WG21 meetings.
In addition, the following roles are essential to running or organization and meetings:
- Meeting Logistics: Jens Maurer (Edison Design Group). The logistics officer is responsible for working with the local host to ensure that each meeting's local arrangements are suitable for the committee's needs for that meeting, from the number/size/times of meeting room space to food and beverage arrangements.
- Email Lists: Detlef Vollmann (Vollmann Engineering). The mailing list officer is responsible for helping people join and manage their membership in the committee's internal email lists, and related setup and maintenance.
At most meetings, we typically have experts representing about a dozen national bodies. Recently attending nations include Bulgaria, Canada, Czech Republic, Finland, France, Germany, Netherlands, Poland, Russia, Spain, Switzerland, United Kingdom, and United States.
Because many regular participants are based in the United States, the U.S. national C++ committee (originally called J16, officially ANSI X3J16; now called .16, officially INCITS PL22.16) arranges its schedule to meet jointly in the same room with WG21. The .16 officers are:
- Chair: John Spicer (Edison Design Group). The chair runs .16 meetings, organizes the operation of the U.S. committee, and is responsible to the U.S. national body for the committee's work.
- Vice-Chair: Hal Finkel (Argonne National Laboratory). The vice-chair assists the chair, including by maintaining the document register.
- Secretary: Nina Ranns. The secretary is responsible for taking and distributing minutes of .16 meetings. (Not coincidentally, we use a U.S. member to serve as secretary for both WG21 and .16 since the minutes have a large overlap.)
- International Representative (IR): Barry Hedquist (Perennial). The IR is responsible for communication between the U.S. and international committees, and is usually head of delegation for U.S. at WG21 meetings.
When we talk about "the committee" we typically mean the full membership of the ISO committee, which is a superset of the U.S. national committee.
Subgroups and Study Groups
The committee is organized into several subgroups, each run by the indicated chairperson. Note "SG" stands for "Study Group."
There are four major subgroups:
- Core, aka CWG: Mike Miller (Edison Design Group).
- Evolution, aka EWG: Ville Voutilainen (Qt).
- Library, aka LWG: Marshall Clow (C++ Alliance).
- Library Evolution, aka LEWG: Titus Winters (Google).
The Core and Library working groups (CWG and LWG) are responsible for the maintenance of existing language and standard library features, and for the "standardese" wording and consistency of new proposals from EWG/LEWG and SGs.
The Evolution and Library Evolution working groups (EWG and LEWG) are responsible for new features that involve language and standard library extensions. In addition to the extensions each group works on directly, EWG and LEWG review the style of work produced by language and library extensions developed in a domain-specific SG. EWG and LEWG also recommend the target vehicle (International Standard or Techical Specification) where each new feature should be included.
In addition, there are a number of domain-specific Study Groups (SG's). These meet as breakouts during full WG21 face-to-face meetings, and can also meet independently between meetings either face-to-face or by telecon. The work of the SG's is eventually reviewed by the appropriate central groups, which helps to ensure consistency. For example, library features like networking features have their domain-specific design done within their SG, their library design style reviewed by LEWG, and their library specification wording reviewed by LWG.
The domain-specific Study Groups are as follows.
Note: Those marked "*" are currently dormant -- proposals have progressed to core groups, and the SG might be reactivated in the future if we receive new papers in the subject area.
- SG1, Concurrency: Olivier Giroux (NVidia). Concurrency and parallelism topics, including the concurrency memory model and the related clauses of the standard.
- SG2, Modules: David Stone (Uber). Modules-related topics, and maintaining an overall view of modules-related work.
- * SG3, File System.
- * SG4, Networking.
- SG5, Transactional Memory: Hans Boehm (Google). Exploring transactional memory constructs for potential future addition to the C++ language.
- SG6, Numerics: Lawrence Crowl. Numerics topics, including but not limited to fixed point, decimal floating point, and fractions.
- SG7, Compile-time programming: Chandler Carruth (Google). Initially focused on compile-time reflection capabilities, then expanded to compile-time programming in general.
- * SG8, Concepts.
- * SG9, Ranges.
- SG10, Feature Test: John Spicer (Edison Design Group). Means for portable code to check whether a particular C++ product implements a feature yet, as we continue to extend the standard.
- * SG11, Databases. Database-related library interfaces.
- SG12, UB & Vulnerabilities: Gabriel Dos Reis (Microsoft). A systematic review to catalog cases of vulnerabilities and undefined/unspecified behavior in the standard, and recommend a coherent set of changes to define and/or specify the behavior.
- SG13, HMI & I/O (Human/Machine Interface): Roger Orr (BSI). Selected low-level output (e.g., graphics, audio) and input (e.g., keyboard, pointing) I/O primitives.
- SG14, Game Development & Low Latency: Michael Wong (Codeplay). Topics of interest to game developers and (other) low-latency programming requirements.
- SG15, Tooling: Bryce Adelstein Lelbach (NVIDIA). Topics related to creation of developer tools for standard C++, including but not limited to modules and package management.
- SG16, Unicode: Tom Honermann (Synopsis). Topics related to Unicode text processing in C++.
- SG17, EWG Incubator: JF Bastien (Apple). A pipeline stage in front of EWG for language proposals that aren't yet ready for EWG or that EWG does not yet have bandwidth to consider.
- SG18, LEWG Incubator: Bryce Adelstein Lelbach (NVIDIA). A pipeline stage in front of LEWG for library proposals that aren't yet ready for LEWG or that LEWG does not yet have bandwidth to consider.
- SG19, Machine Learning: Michael Wong (Codeplay). Address and improve on C++’s ability to support fast iteration, better support for array, matrix, linear algebra, in memory passing of data for computation, scaling, and graphing, as well as optimization for graph programming.
- SG20, Education: JC van Winkel. Produce guidance for modern course materials for C++ education.
- SG21, Contracts: John Spicer (Edison Design Group). Discussion related to contract programming for checking, documentation, analysis, and other purposes.