[libc++][format] Adds formatter pointer.
authorMark de Wever <koraq@xs4all.nl>
Sun, 28 Nov 2021 13:43:43 +0000 (14:43 +0100)
committerMark de Wever <koraq@xs4all.nl>
Mon, 24 Jan 2022 17:13:02 +0000 (18:13 +0100)
commit787ccd345cbb3a569ba751580bb806552b4b6e57
tree1588412baa786e4deaa9f4f36086abcf406398c5
parentdb2944e34b16387bf4326ddfd2a8c420594572f4
[libc++][format] Adds formatter pointer.

This implements the last required formatter specialization.

Completes:
- LWG 3251 Are std::format alignment specifiers applied to string arguments?
- LWG 3340 Formatting functions should throw on argument/format string mismatch in §[format.functions]
- LWG 3540 §[format.arg] There should be no const in basic_format_arg(const T* p)

Implements parts of:
- P0645 Text Formatting

Depends on D114001

Reviewed By: ldionne, vitaut, #libc

Differential Revision: https://reviews.llvm.org/D115988
13 files changed:
libcxx/docs/Status/Cxx20Issues.csv
libcxx/docs/Status/Cxx2bIssues.csv
libcxx/include/CMakeLists.txt
libcxx/include/__format/format_arg.h
libcxx/include/__format/formatter_pointer.h [new file with mode: 0644]
libcxx/include/__format/parser_std_format_spec.h
libcxx/include/format
libcxx/include/module.modulemap
libcxx/test/libcxx/diagnostics/detail.headers/format/formatter_pointer.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/utilities/format/format.arguments/format.arg/visit_format_arg.pass.cpp
libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_pointer.pass.cpp [new file with mode: 0644]
libcxx/test/std/utilities/format/format.formatter/format.context/format.formatter.spec/formatter.pointer.pass.cpp [new file with mode: 0644]
libcxx/test/std/utilities/format/format.functions/format_tests.h