Typos in the subject line:

"encoded"
"filesystem"

On Thu, 28 May 2026 at 09:50 +0200, Tomasz Kamiński wrote:
Futhermore string and generic_string method as marked as deprecated

"Furthermore"

in C++26 mode.

This implements the P2319R5 "Prevent path presentation problem" paper,
with the rename of system_encoded_string from LWG4512,
"The system_encoded_string() and generic_system_encoded_string() member
functions of std::filesystem::path are misnamed".

The wording defines the display_string and generic_display_string
int terms of call of format with format string "{}" and "{:g}"

"in terms of"

Let's say "call of std::format" because otherwise "call of format with
format string" seems repetitive and a bit confusing.

respectively. This patch inlines the effects of above, by either
returning native() or generic_string<value_type>() direclty

"directly"

(if value_type is char), or string constructed __unicode::_Utf_view
of above (when value_type is wchar_t).

As we currently assume that char encoding is always UTF-8, the outputs
of (generic_)native_encoded string and (generic_)display_string
are equivalent. However, the former may be adjusted in future.

libstdc++-v3/ChangeLog:

        * include/bits/fs_path.h (path::string, path::generic_string):
        Add deprected attribute in C++26 via _GLIBCXX26_DEPRECATED_SUGGEST.

"deprecated"

        (path::display_string, path::native_encoded_string)
        (path::generic_display_string, path::generic_native_encoded_string)
        [__glibcxx_format_path >= 202506L]: Define.
        * include/bits/version.def (format_path): Bump to 202506.
        * include/bits/version.h: Regenerate.
        * testsuite/util/testsuite_fs.h (__gnu_test::compare_paths):
        Ignored deprecated declarations warning.
        * testsuite/27_io/filesystem/filesystem_error/cons.cc:
        Disable -Wdeprecated-declarations warning with pragmas.
        * testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
        * testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
        * testsuite/27_io/filesystem/path/concat/strings.cc: Likwise.
        * testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
        * testsuite/27_io/filesystem/operations/temp_directory_path.cc:
        Likewise.
        * testsuite/27_io/filesystem/path/decompose/root_directory.cc:
        Likewise.
        * testsuite/27_io/filesystem/path/generic/generic_string.cc:
        Likewise.
        * testsuite/27_io/print/1.cc: Likewise.
        * testsuite/27_io/print/2.cc: Likewise.
        * testsuite/27_io/print/3.cc: Likewise.
        * testsuite/27_io/filesystem/path/append/source.cc:
        Add dg-warning for deprecated functions use.
        * testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
        * testsuite/27_io/filesystem/path/native/string-char8_t.cc:
        Likewise.
        * testsuite/27_io/filesystem/path/generic/display_native_string.cc:
        New test.
        * testsuite/27_io/filesystem/path/native/display_native_string.cc:
        New test.
---
I used dg-warning when there was one/two calls to update, and
addign it didn't make lines excessivelly long. The display_native_string
test make sure that warning appear.

Tested on x86_64-linux. *filesystem/path* also tested on MinGW and WINE
locally. OK for trunk?

OK with the typos fixed, thanks.


Reply via email to