From: Jonathan Wakely <jwakely@redhat.com>
To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org
Subject: [committed] libstdc++: Fix %S format of duration with floating-point rep
Date: Fri, 15 Dec 2023 00:01:46 +0000 [thread overview]
Message-ID: <20231215000208.2068561-1-jwakely@redhat.com> (raw)
Tested x86_64-linux. Pushed to trunk. Backport needed too.
-- >8 --
I got the order of arguments to std::format_to wrong. It was in a
discarded statement, for a case which wasn't being tested.
libstdc++-v3/ChangeLog:
* include/bits/chrono_io.h (__formatter_chrono::_M_S): Fix order
of arguments to std::format_to.
* testsuite/20_util/duration/io.cc: Test subsecond duration with
floating-point rep.
---
libstdc++-v3/include/bits/chrono_io.h | 2 +-
libstdc++-v3/testsuite/20_util/duration/io.cc | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h
index bcd76e4ab7b..c30451651ea 100644
--- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -1137,7 +1137,7 @@ namespace __format
using rep = typename decltype(__ss)::rep;
if constexpr (is_floating_point_v<rep>)
{
- __out = std::format_to(__loc, std::move(__out),
+ __out = std::format_to(std::move(__out), __loc,
_GLIBCXX_WIDEN("{:.{}Lg}"),
__ss.count(),
__hms.fractional_width);
diff --git a/libstdc++-v3/testsuite/20_util/duration/io.cc b/libstdc++-v3/testsuite/20_util/duration/io.cc
index d2b9de73f83..0582c0075a5 100644
--- a/libstdc++-v3/testsuite/20_util/duration/io.cc
+++ b/libstdc++-v3/testsuite/20_util/duration/io.cc
@@ -95,6 +95,10 @@ test_format()
"required by the chrono-specs") != s.npos);
}
}
+
+ std::chrono::duration<float, std::milli> d{0.5};
+ s = std::format("{}", d);
+ VERIFY( s == "0.5ms" );
}
void
--
2.43.0
reply other threads:[~2023-12-15 0:02 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231215000208.2068561-1-jwakely@redhat.com \
--to=jwakely@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=libstdc++@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).