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: Jonathan Wakely (Red Hat). The secretary is responsible for taking and distributing minutes of WG21 meetings.
Typically experts from 8-10 national bodies attend each meeting. Recently attending nations include Canada, Finland, France, Netherlands, 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: Clark Nelson (Intel). 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: John Spicer (Edison Design Group). The vice-chair assists the chair, including by maintaining the document register.
- Secretary: Jonathan Wakely (Red Hat). 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 (Symbio).
- Library, aka LWG: Alisdair Meredith (Bloomberg).
- Library Evolution, aka LEWG: Jeffrey Yasskin (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:
- SG1, Concurrency: Hans Boehm (Google). Concurrency and parallelism topics.
- SG2, Modules (complete, now handled in core groups). Work on possible refinement or replacement for the header-based build model.
- SG3, File System: Beman Dawes (Boost) (complete, now handled in core groups). Work based on Boost.Filesystem v3.
- SG4, Networking (complete, now handled in core groups). Networking related libraries, including sockets and HTTP.
- SG5, Transactional Memory: Michael Wong (IBM). 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, Reflection: Chandler Carruth (Google). Initially focusing on compile-time reflection capabilities.
SG8, Concepts (complete, now handled in core groups). Near-term focus is on a convergence between the
static ifproposals and the parameter-type-constraints subset of concepts.
- SG9, Ranges: Marshall Clow (Qualcomm) (complete, now handled in core groups). How to update the standard library with a range concept rather than naked iterator pairs, including containers and range-based algorithms.
- SG10, Feature Test: Clark Nelson (Intel). Investigation into whether and how to standardize a way for portable code to check whether a particular C++ product implements a feature yet, as we continue to extend the standard.
- SG11, Databases (complete, now handled in core groups). Database-related library interfaces.
- SG12, Undefined and Unspecified Behavior: Gabriel Dos Reis (Microsoft). A systematic review to catalog cases of undefined and unspecified behavior in the standard and recommend a coherent set of changes to define and/or specify the behavior.
- SG13, I/O: Herb Sutter (Microsoft) (complete, now handled in core groups). Investigation into selected low-level graphic/pointing I/O primitives.