[libc++][format] Adds formattable-with concept.
authorMark de Wever <koraq@xs4all.nl>
Sun, 16 Apr 2023 10:21:38 +0000 (12:21 +0200)
committerMark de Wever <koraq@xs4all.nl>
Wed, 21 Jun 2023 06:05:33 +0000 (08:05 +0200)
commit48abcf11ada1e0b300d907dcdb3cf7b191fdc85e
treef97075bbe45f2b21c1a1c302e50856cb3d1b3d0a
parente0a6561ec9ec10f8c0c43b15dfcbbc3c57d37d3f
[libc++][format] Adds formattable-with concept.

This change has a few additional effects:
- Abstract classes are now formattable.
- Volatile objects are no longer formattable.

Implements
- LWG3631 basic_format_arg(T&&) should use remove_cvref_t<T> throughout
- LWG3925 Concept formattable's definition is incorrect

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D152092
libcxx/docs/ReleaseNotes.rst
libcxx/docs/Status/Cxx23Issues.csv
libcxx/docs/Status/Cxx2cIssues.csv
libcxx/include/__format/concepts.h
libcxx/include/__format/format_arg.h
libcxx/include/__format/format_arg_store.h
libcxx/include/__format/formatter_string.h
libcxx/test/std/utilities/format/format.formattable/concept.formattable.compile.pass.cpp
libcxx/test/std/utilities/format/format.tuple/format.functions.tests.h