Annex C (informative) Compatibility [diff]

C.4 C++ and ISO C++ 2003 [diff.cpp03]

C.4.6 [library]: library introduction [diff.cpp03.library]

Affected: [library][thread]
Change: New reserved identifiers.

Rationale: Required by new features.

Effect on original feature: Valid C++ 2003 code that uses any identifiers added to the C++ standard library by this International Standard may fail to compile or produce different results in this International Standard.
A comprehensive list of identifiers used by the C++ standard library can be found in the Index of Library Names in this International Standard.
Affected subclause: [headers]
Change: New headers.

Rationale: New functionality.

Effect on original feature: The following C++ headers are new: <array> ([array.syn]), <atomic> ([atomics.syn]), <chrono> ([time.syn]), <codecvt> ([depr.codecvt.syn]), <condition_­variable> ([condition.variable.syn]), <forward_­list> ([forward.list.syn]), <future> ([future.syn]), <initializer_­list> ([initializer.list.syn]), <mutex> ([mutex.syn]), <random> ([rand.synopsis]), <ratio> ([ratio.syn]), <regex> ([re.syn]), <scoped_­allocator> ([allocator.adaptor.syn]), <system_­error> ([system.error.syn]), <thread> ([thread.syn]), <tuple> ([tuple.syn]), <typeindex> ([type.index.synopsis]), <type_­traits> ([meta.type.synop]), <unordered_­map> ([unord.map.syn]), and <unordered_­set> ([unord.set.syn]).
In addition the following C compatibility headers are new: <cfenv> ([cfenv.syn]), <cinttypes> ([cinttypes.syn]), <cstdint> ([cstdint.syn]), and <cuchar> ([cuchar.syn]).
Valid C++ 2003 code that #includes headers with these names may be invalid in this International Standard.
Affected subclause: [swappable.requirements]
Effect on original feature: Function swap moved to a different header
Rationale: Remove dependency on <algorithm> ([algorithm.syn]) for swap.

Effect on original feature: Valid C++ 2003 code that has been compiled expecting swap to be in <algorithm> ([algorithm.syn]) may have to instead include <utility> ([utility.syn]).
Affected subclause: [namespace.posix]
Change: New reserved namespace.

Rationale: New functionality.

Effect on original feature: The global namespace posix is now reserved for standardization.
Valid C++ 2003 code that uses a top-level namespace posix may be invalid in this International Standard.
Affected subclause: [res.on.macro.definitions]
Change: Additional restrictions on macro names.

Rationale: Avoid hard to diagnose or non-portable constructs.

Effect on original feature: Names of attribute identifiers may not be used as macro names.
Valid C++ 2003 code that defines override, final, carries_­dependency, or noreturn as macros is invalid in this International Standard.