]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR libstdc++/91786 fix compilation error with Clang
authorJonathan Wakely <jwakely@redhat.com>
Wed, 11 Dec 2019 13:45:56 +0000 (13:45 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 11 Dec 2019 13:45:56 +0000 (13:45 +0000)
Backport from mainline
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.

From-SVN: r279223

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/fs_path.h

index 40a7116b8d9d1b4cb9aebe7df06deff6c3dd5967..60f3e3496d35cdf3d38f45d401c7171413699282 100644 (file)
@@ -1,3 +1,12 @@
+2019-12-11  Jonathan Wakely  <jwakely@redhat.com>
+
+       Backport from mainline
+       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-12-10  Thomas Rodgers  <trodgers@redhat.com>
 
        Backport from mainline
index e56a0a7f138a740443eb8f775ecd8fe374924673..5dc624dbb1eb479b02dd7ab37106aa39414f91e6 100644 (file)
@@ -612,6 +612,36 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 
   size_t hash_value(const path& __p) noexcept;
 
+  /// 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
   template<typename _InputIterator>
     inline auto
     u8path(_InputIterator __first, _InputIterator __last)
@@ -642,6 +672,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #endif
     }
 
+  /// Create a path from a UTF-8-encoded sequence of char
   template<typename _Source>
     inline auto
     u8path(const _Source& __source)
@@ -663,34 +694,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #endif
     }
 
-  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;
-  };
-
   struct path::_Cmpt : path
   {
     _Cmpt(basic_string_view<value_type> __s, _Type __t, size_t __pos)