Proposed resolution:
This wording is relative to N4849.
Change [cstdint.syn], header <cstdint> synopsis, as indicated:
[…] using int64_t = signed integer type; // optional using intN_t = see below; // optional, see below […] using int_fast64_t = signed integer type; using int_fastN_t = see below; // optional, see below […] using int_least64_t = signed integer type; using int_leastN_t = see below; // optional, see below […] using uint64_t = unsigned integer type; // optional using uintN_t = see below; // optional, see below […] using uint_fast64_t = unsigned integer type; using uint_fastN_t = see below; // optional, see below […] using uint_least64_t = unsigned integer type; using uint_leastN_t = see below; // optional, see below using uintmax_t = unsigned integer type; using uintptr_t = unsigned integer type; // optional #define INTN_MIN see below #define INTN_MAX see below #define UINTN_MAX see below #define INT_FASTN_MIN see below #define INT_FASTN_MAX see below #define UINT_FASTN_MAX see below #define INT_LEASTN_MIN see below #define INT_LEASTN_MAX see below #define UINT_LEASTN_MAX see below #define INTMAX_MIN see below #define INTMAX_MAX see below #define UINTMAX_MAX see below #define INTPTR_MIN optional, see below #define INTPTR_MAX optional, see below #define UINTPTR_MAX optional, see below #define PTRDIFF_MIN see below #define PTRDIFF_MAX see below #define SIZE_MAX see below #define SIG_ATOMIC_MIN see below #define SIG_ATOMIC_MAX see below #define WCHAR_MIN see below #define WCHAR_MAX see below #define WINT_MIN see below #define WINT_MAX see below #define INTN_C(value) see below #define UINTN_C(value) see below #define INTMAX_C(value) see below #define UINTMAX_C(value) see below
-1- The header also defines numerous macros of the form:INT_[FAST LEAST]{8 16 32 64}_MIN [U]INT_[FAST LEAST]{8 16 32 64}_MAX INT{MAX PTR}_MIN [U]INT{MAX PTR}_MAX {PTRDIFF SIG_ATOMIC WCHAR WINT}{_MAX _MIN} SIZE_MAX
plus function macros of the form:[U]INT{8 16 32 64 MAX}_C-2- The header defines all types and macros the same as the C standard library header <stdint.h>. See also: ISO C 7.20
-?- All types that use the placeholder N are optional when N is not 8, 16, 32 or 64. The exact-width types intN_t and uintN_t for N = 8, 16, 32, 64 are also optional; however, if an implementation defines integer types with the corresponding width and no padding bits, it defines the corresponding typedef names. Each of the macros listed in this subclause is defined if and only if the implementation defines the corresponding typedef name. [Note: The macros INTN_C and UINTN_C correspond to the typedef names int_leastN_t and uint_leastN_t, respectively. — end note]
Change [cinttypes.syn] as indicated:
#define PRIdNN see below #define PRIiNN see below #define PRIoNN see below #define PRIuNN see below #define PRIxNN see below #define PRIXNN see below #define SCNdNN see below #define SCNiNN see below #define SCNoNN see below #define SCNuNN see below #define SCNxNN see below #define PRIdLEASTNN see below #define PRIiLEASTNN see below #define PRIoLEASTNN see below #define PRIuLEASTNN see below #define PRIxLEASTNN see below #define PRIXLEASTNN see below #define SCNdLEASTNN see below #define SCNiLEASTNN see below #define SCNoLEASTNN see below #define SCNuLEASTNN see below #define SCNxLEASTNN see below #define PRIdFASTNN see below #define PRIiFASTNN see below #define PRIoFASTNN see below #define PRIuFASTNN see below #define PRIxFASTNN see below #define PRIXFASTNN see below #define SCNdFASTNN see below #define SCNiFASTNN see below #define SCNoFASTNN see below #define SCNuFASTNN see below #define SCNxFASTNN see below […]-1- The contents and meaning of the header <cinttypes> […]
-?- Each of the PRI macros listed in this subclause is defined if and only if the implementation defines the corresponding typedef name in [cstdint.syn]. Each of the SCN macros listed in this subclause is defined if and only if the implementation defines the corresponding typedef name in [cstdint.syn] and has a suitable fscanf length modifier for the type.