-
- Downloads
libstdc++: Implement std::to_string in terms of std::format (P2587R3)
This change for C++26 affects std::to_string for floating-point arguments, so that they should be formatted using std::format("{}", v) instead of using sprintf. The modified specification in the standard also affects integral arguments, but there's no observable difference for them, and we already use std::to_chars for them anyway. To avoid <string> depending on all of <format>, this change actually just uses std::to_chars directly instead of using std::format. This is equivalent, because the format spec "{}" doesn't use any of the other features of std::format. libstdc++-v3/ChangeLog: * include/bits/basic_string.h (to_string(floating-point-type)): Implement using std::to_chars for C++26. * include/bits/version.def (__cpp_lib_to_string): Define. * include/bits/version.h: Regenerate. * testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc: Adjust expected result in C++26 mode. * testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc: New test. * testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_float.cc: New test. * testsuite/21_strings/basic_string/numeric_conversions/version.cc: New test.
Showing
- libstdc++-v3/include/bits/basic_string.h 66 additions, 2 deletionslibstdc++-v3/include/bits/basic_string.h
- libstdc++-v3/include/bits/version.def 11 additions, 0 deletionslibstdc++-v3/include/bits/version.def
- libstdc++-v3/include/bits/version.h 11 additions, 0 deletionslibstdc++-v3/include/bits/version.h
- libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc 8 additions, 3 deletions...1_strings/basic_string/numeric_conversions/char/dr1261.cc
- libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc 7 additions, 2 deletions...trings/basic_string/numeric_conversions/char/to_string.cc
- libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc 148 additions, 0 deletions.../basic_string/numeric_conversions/char/to_string_float.cc
- libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/version.cc 18 additions, 0 deletions...te/21_strings/basic_string/numeric_conversions/version.cc
- libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc 8 additions, 3 deletions...trings/basic_string/numeric_conversions/wchar_t/dr1261.cc
- libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc 7 additions, 2 deletions...gs/basic_string/numeric_conversions/wchar_t/to_wstring.cc
- libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_float.cc 145 additions, 0 deletions...ic_string/numeric_conversions/wchar_t/to_wstring_float.cc
Loading
Please register or sign in to comment