C++, created as an extension of the C language, is very commonly used for developing programs such as browsers, operating systems and more. Standards included in this category go over specifics for the programming language.
ISO/IEC TS 19216:2018 describes extensions to the C++ Standard Library. This document specifies requirements for implementations of an interface that computer programs written in the C++ programming language may use to perform operations related to networking, such as operations involving sockets, timers, bu˙er management, host name resolution and internet protocols. This document is applicable to information technology systems that can perform network operations, such as those with operating systems that conform to the POSIX interface. This document is applicable only to vendors who wish to provide the interface it describes.
ISO/IEC TS 19217:2015 describes extensions to the C++ Programming Language (1.2) that enable the specification and checking of constraints on template arguments, and the ability to overload functions and specialize class templates based on those constraints. These extensions include new syntactic forms and modifications to existing language semantics.
The International Standard, ISO/IEC 14882, provides important context and specification for this Technical Specification. This document is written as a set of changes against that specification. Instructions to modify or add paragraphs are written as explicit instructions. Modifications made directly to existing text from the International Standard use underlining to represent added text and strikethrough to represent deleted text.
WG21 paper N4191 defines "fold expressions", which are used to define constraint expressions resulting from the use of constrained-parameters that declare template parameter packs. This feature is not present in ISO/IEC 14882:2014, but it is planned to be included in the next revision of that International Standard. The specification of that feature is included in this document.
ISO/IEC TS 19568:2017 describes extensions to the C++ Standard Library (1.2). These extensions are classes and functions that are likely to be used widely within a program and/or on the interface boundaries between libraries written by different organizations.
ISO/IEC TS 19568:2017 is non-normative. Some of the library components in this technical specification may be considered for standardization in a future version of C++, but they are not currently part of any C++ standard. Some of the components in this technical specification may never be standardized, and others may be standardized in a substantially changed form.
The goal of this technical specification is to build more widespread existing practice for an expanded C++ standard library. It gives advice on extensions to those vendors who wish to provide them.
This document describes requirements for implementations of an interface that computer programs written in the C++ programming language can use to invoke algorithms with parallel execution. The algorithms described by this document are realizable across a broad class of computer architectures.
There is a possibility of a subset of the functionality described by this document being standardized in a future version of C++, but it is not currently part of any C++ standard. There is a possibility of some of the functionality in this document never being standardized, or of it being standardized in a substantially changed form.
The goal of this document is to build widespread existing practice for parallelism in the C++ programming language. It gives advice on extensions to those vendors who wish to provide them.
ISO/IEC TS 21425:2017 describes extensions to the C++ Programming Language (2) that permit operations on ranges of data. These extensions include changes and additions to the existing library facilities as well as the extension of one core language facility. In particular, changes and extensions to the Standard Library include:
- The formulation of the foundational and iterator concept requirements using the syntax of the Concepts
TS (2).
- Analogues of the Standard Library algorithms specified in terms of the new concepts.
- The loosening of the algorithm constraints to permit the use of sentinels to denote the end of a range
and corresponding changes to algorithm return types where necessary.
- The addition of new concepts describing range and view abstractions; that is, objects with a begin
iterator and an end sentinel.
- New algorithm overloads that take range objects.
- Support of callable objects (as opposed to function objects) passed as arguments to the algorithms.
- The addition of optional projection arguments to the algorithms to permit on-the-fly data transforma-
tions.
- Analogues of the iterator primitives and new primitives in support of the addition of sentinels to the
library.
- Constrained analogues of the standard iterator adaptors and stream iterators that satisfy the new iterator concepts.
- New iterator adaptors (counted_iterator and common_iterator) and sentinels (unreachable).
Changes to the core language include:
- the extension of the range-based for statement to support the new iterator range requirements (10.4).
ISO/IEC TS 21425:2017 does not specify constrained analogues of other parts of the Standard Library (e.g., the numeric algorithms), nor does it add range support to all the places that could benefit from it (e.g., the containers).
ISO/IEC TS 21425:2017 does not specify any new range views, actions, or facade or adaptor utilities; all are left as future work.
This document describes extensions to the C++ Programming Language (Clause 2) that introduce modules, a functionality for designating a set of translation units by symbolic name and ability to express symbolic dependency on modules, and to define interfaces of modules. These extensions include new syntactic forms and modifications to existing language semantics.
ISO/IEC 14882 provides important context and specification for this document. This document is written as a set of changes against that specification. Instructions to modify or add paragraphs are written as explicit instructions. Modifications made directly to existing text from ISO/IEC 14882 use underlining to represent added text and strikethrough to represent deleted text.
ISO/IEC TR 19768:2007 specifies a series of extensions to the standard library for the programming language C++, as specified by ISO/IEC 14882, in order to build more widespread existing practice for an expanded C++ standard library. Some of the components in ISO/IEC TR 19768:2007 could be considered for standardization in a future version of C++.
The specific classes of extensions specified in ISO/IEC TR 19768:2007 are as follows:
The aim of ISO/IEC TR 18015 is to:
The special needs of embedded systems programming are presented, including ROMability and predictability. A separate chapter presents general C and C++ interfaces to the basic hardware facilities of embedded systems.
ISO/IEC TR 24733:2011 specifies an extension to the programming language C++, specified by ISO/IEC 14882:2003. The extension provides support for decimal floating-point arithmetic that is consistent with the specification in IEEE 754-2008.
ISO/IEC TR 24733:2011 does not consider the binary floating-point arithmetic specified in IEEE 754-2008.
This part of ISO 10303 specifies the implementation of the functional interface specified in the standard data access interface (SDAI), ISO 10303-22, in the C++ programming language.
The following are within the scope of this part of ISO 10303:
The following is outside the scope of this part of ISO 10303: