https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120810

            Bug ID: 120810
           Summary: [DR 461] std::time_get::do_get_date should consider
                    date_order()
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
        Depends on: 9635
            Blocks: 86976
  Target Milestone: ---

https://cplusplus.github.io/LWG/issue461

We use the locale's D_FMT format (which is what strftime %x uses too). I think
that works OK in general, and actually seems preferable to DR 461.

DR 461 says we should consider the result of date_order() when deciding how to
parse a date, but that seems to be a poor substitute for knowing the locale's
D_FMT format. DR 461 says "figure out the locale's preferred date format from
one of these four distinct options" but that assumes that the locale _uses_ one
of those options, and that you can find a way to get it from do_date_order()
(which we can't! see Bug 9635).

We could add code to std::time_get::do_get_date() which calls do_date_order()
and if it's not no_order then use the format it specifies. That would do the
right thing for facets derived from std::time_get which override
do_date_order(). If it returns no_order, then fallback to using D_FMT as we do
now.

N.B. testsuite/22_locale/time_get/get_time/char/6.cc (and the wchar_t
equivalent) mention 461 and have some commented out checks that depend on it.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=9635
[Bug 9635] time_get<>::date_order unimplemented
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86976
[Bug 86976] [meta-bug] Issues with std::time_get, std::time_put etc.

Reply via email to