From: redi Date: Tue, 18 Dec 2018 16:57:36 +0000 (+0000) Subject: LWG 3171: restore stream insertion for filesystem::directory_entry X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8f31a5fa2277fbef2ea04127146f9c6d6e2de5e4;p=thirdparty%2Fgcc.git LWG 3171: restore stream insertion for filesystem::directory_entry * include/bits/fs_dir.h (operator<<): Overload for directory_entry, as per LWG 3171. * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@267238 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5378bc386323..d9747e8bb07e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,9 @@ 2018-12-18 Jonathan Wakely + * include/bits/fs_dir.h (operator<<): Overload for directory_entry, + as per LWG 3171. + * testsuite/27_io/filesystem/directory_entry/lwg3171.cc: New test. + * src/filesystem/std-dir.cc (filesystem::_Dir::advance): Move new path instead of copying. diff --git a/libstdc++-v3/include/bits/fs_dir.h b/libstdc++-v3/include/bits/fs_dir.h index 2f81a1709e44..90bdf7305f8b 100644 --- a/libstdc++-v3/include/bits/fs_dir.h +++ b/libstdc++-v3/include/bits/fs_dir.h @@ -300,6 +300,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 friend class directory_iterator; friend class recursive_directory_iterator; + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3171. LWG 2989 breaks directory_entry stream insertion + template + friend basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, + const directory_entry& __d) + { return __os << __d.path(); } + directory_entry(const filesystem::path& __p, file_type __t) : _M_path(__p), _M_type(__t) { }