Date
2020-11-09.21:40:50
Message id
11553

Content

Proposed resolution:

This wording is relative to N4849.

  1. 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]

  2. 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.