PR libstdc++/91786 fix compilation error with Clang
authorJonathan Wakely <jwakely@redhat.com>
Mon, 25 Nov 2019 19:01:58 +0000 (19:01 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 25 Nov 2019 19:01:58 +0000 (19:01 +0000)
PR libstdc++/91786
* include/bits/fs_path.h (filesystem_error): Move definition before
the use in u8path.

From-SVN: r278697

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

index a479a1219ff878f879d580a0cc4f5f9157fc0d13..09202af787f2a58f4adb7ae15aa525505be01054 100644 (file)
@@ -1,3 +1,9 @@
+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>
 
        * include/debug/functions.h: Remove <bits/move.h> include.
index e1083acf30f54e558c4adaac2a09420590ae800d..031ec3d7c7f7874471e738eafb90ce2c90f7743f 100644 (file)
@@ -622,7 +622,41 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 
   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>
     inline auto
     u8path(_InputIterator __first, _InputIterator __last)
@@ -653,7 +687,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #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>
     inline auto
     u8path(const _Source& __source)
@@ -675,37 +712,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11
 #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
 
   struct path::_Cmpt : path