diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2022-10-15 21:20:47 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2022-10-15 21:20:47 +0100 |
commit | 378a0f1840e6944d05ed1e374e514abe9564e91a (patch) | |
tree | ae315fe2b41d8646d66af91f86ccb4bd58054983 /libjava/java/sql/SQLOutput.java | |
parent | e24b430f1ea60205162fd9b327ac6a4dfc57f37c (diff) | |
download | gcc-378a0f1840e6944d05ed1e374e514abe9564e91a.zip gcc-378a0f1840e6944d05ed1e374e514abe9564e91a.tar.gz gcc-378a0f1840e6944d05ed1e374e514abe9564e91a.tar.bz2 |
libstdc++: Implement constexpr std::to_chars for C++23 (P2291R3)
Some of the helper functions use static constexpr local variables, which
is not permitted in a core constant expression. Removing the 'static'
seems to have negligible performance effect for __to_chars and
__to_chars_16. For __from_chars_alnum_to_val removing the 'static'
causes a significant performance impact for base 36 conversions. Use a
consteval lambda instead.
libstdc++-v3/ChangeLog:
* include/bits/charconv.h (__to_chars_10_impl): Add constexpr
for C++23. Remove 'static' from array.
* include/std/charconv (__cpp_lib_constexpr_charconv): Define.
(__to_chars, __to_chars_16): Remove 'static' from array, add
constexpr.
(__to_chars_10, __to_chars_8, __to_chars_2, __to_chars_i)
(to_chars, __raise_and_add, __from_chars_pow2_base)
(__from_chars_alnum, from_chars): Add constexpr.
(__from_chars_alnum_to_val): Avoid local static during constant
evaluation. Add constexpr.
* include/std/version (__cpp_lib_constexpr_charconv): Define.
* testsuite/20_util/from_chars/constexpr.cc: New test.
* testsuite/20_util/to_chars/constexpr.cc: New test.
* testsuite/20_util/to_chars/version.cc: New test.
Diffstat (limited to 'libjava/java/sql/SQLOutput.java')
0 files changed, 0 insertions, 0 deletions