n2525: remove the fromfp, ufromfp, fromfpx, ufromfpx, and other intmax_t functions

Submitter:Philipp Klaus Krause
Submission Date:2020-05-11

Summary:

Remove the fromfp, ufromfp, fromfpx, ufromfpx, and other intmax_t function.s

The current draft N2479 for C2X adds the 12 fromfp and ufromfp function and 12 fromfpx and ufromfpx functions, that were not in C17. However, we just voted to remove intmax_t from C2X, and these functions don't make sense without intmax_t. Also, we still have the functions for intmax_t in inttypes.h. All of the functions in inttypes.h have max in their name, so replacing intmax_t by a different type would result in confusingly-named functions. Also, the printf family still has the j specifier. While the majority voted to remove intmax_t without a replacement (thus this proposal can be seen as the first step of implemnenting that decision by removing library functiosn that depend on intmax_t), one of the most-popular alternatives would have been to keep intmax_t and still remove the funtions (to avoid having them in an ABI). So removing the functions would have been necessary even for less radical approaches on intmax_t.

Do we want to remove the new intmax_t functions?

Proposed changes:
Remove §7.12.9.11, "The fromfp and ufromfp functions" and §7.12.9.11, "The fromfpx and ufromfpx functions".

Do we want to remove the old intmax_t functions?

Proposed changes:
Remove §7.8.2, "Functions for greatest-width integer types".

Do we want to remove the j specifier for the printf and scanf family?

Proposed changes:
From §7.21.6.1p7, remove " j Specifies that a following d, i, o, u, x, or X conversion specifier applies to an intmax_t or uintmax_t argument; or that a following n conversion specifier applies to a pointer to an intmax_t argument.".
From §7.21.6.2p11, remove " j Specifies that a following d, i, o, u, x, X, or n conversion specifier applies to an argument with type pointer to intmax_t or uintmax_t.".