Commit d6039f5c by Jonathan Wakely Committed by Jonathan Wakely

PR libstdc++/91786 fix compilation error with Clang

	PR libstdc++/91786
	* include/bits/fs_path.h (filesystem_error): Move definition before
	the use in u8path.

From-SVN: r278697
parent d222e470
2019-11-25 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/91786
* include/bits/fs_path.h (filesystem_error): Move definition before
the use in u8path.
2019-11-24 François Dumont <fdumont@gcc.gnu.org> 2019-11-24 François Dumont <fdumont@gcc.gnu.org>
* include/debug/functions.h: Remove <bits/move.h> include. * include/debug/functions.h: Remove <bits/move.h> include.
......
...@@ -622,7 +622,41 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 ...@@ -622,7 +622,41 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
size_t hash_value(const path& __p) noexcept; size_t hash_value(const path& __p) noexcept;
/// Create a path from a UTF-8-encoded sequence of char /// @}
/// Exception type thrown by the Filesystem library
class filesystem_error : public std::system_error
{
public:
filesystem_error(const string& __what_arg, error_code __ec);
filesystem_error(const string& __what_arg, const path& __p1,
error_code __ec);
filesystem_error(const string& __what_arg, const path& __p1,
const path& __p2, error_code __ec);
filesystem_error(const filesystem_error&) = default;
filesystem_error& operator=(const filesystem_error&) = default;
// No move constructor or assignment operator.
// Copy rvalues instead, so that _M_impl is not left empty.
~filesystem_error();
const path& path1() const noexcept;
const path& path2() const noexcept;
const char* what() const noexcept;
private:
struct _Impl;
std::__shared_ptr<const _Impl> _M_impl;
};
/** Create a path from a UTF-8-encoded sequence of char
*
* @relates std::filesystem::path
*/
template<typename _InputIterator> template<typename _InputIterator>
inline auto inline auto
u8path(_InputIterator __first, _InputIterator __last) u8path(_InputIterator __first, _InputIterator __last)
...@@ -653,7 +687,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 ...@@ -653,7 +687,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
#endif #endif
} }
/// Create a path from a UTF-8-encoded sequence of char /** Create a path from a UTF-8-encoded sequence of char
*
* @relates std::filesystem::path
*/
template<typename _Source> template<typename _Source>
inline auto inline auto
u8path(const _Source& __source) u8path(const _Source& __source)
...@@ -675,37 +712,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 ...@@ -675,37 +712,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
#endif #endif
} }
/// @}
/// Exception type thrown by the Filesystem library
class filesystem_error : public std::system_error
{
public:
filesystem_error(const string& __what_arg, error_code __ec);
filesystem_error(const string& __what_arg, const path& __p1,
error_code __ec);
filesystem_error(const string& __what_arg, const path& __p1,
const path& __p2, error_code __ec);
filesystem_error(const filesystem_error&) = default;
filesystem_error& operator=(const filesystem_error&) = default;
// No move constructor or assignment operator.
// Copy rvalues instead, so that _M_impl is not left empty.
~filesystem_error();
const path& path1() const noexcept;
const path& path2() const noexcept;
const char* what() const noexcept;
private:
struct _Impl;
std::__shared_ptr<const _Impl> _M_impl;
};
/// @cond undocumented /// @cond undocumented
struct path::_Cmpt : path struct path::_Cmpt : path
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment