[PATCH] thread.hpp: Fix redefinition of default argument

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Mar 18 15:15:53 UTC 2022


A default argument shall be defined only once.

Close #4632.
---
 cpukit/include/rtems/thread.hpp | 32 ++++++++++++++------------------
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/cpukit/include/rtems/thread.hpp b/cpukit/include/rtems/thread.hpp
index cdef690740..56e301c0bc 100644
--- a/cpukit/include/rtems/thread.hpp
+++ b/cpukit/include/rtems/thread.hpp
@@ -220,6 +220,12 @@ namespace rtems
       /* affinity, cpu set size is? */
     };
 
+    template <class T>
+    inline typename std::decay<T>::type
+    decay_copy(T&& t) {
+      return std::forward<T>(t);
+    }
+
     /**
      * @brief Create a thread with thread attributes.
      *
@@ -310,7 +316,14 @@ namespace rtems
        */
       template <typename A, typename F, typename ...Args,
                 class = enable_if_attributes<A>>
-      explicit thread(A&& attr, F&& func, Args&&... args);
+      explicit thread(A&& attr, F&& func, Args&&... args)
+        : id_(0) {
+        start_thread(
+          make_state(attr,
+                     make_invoker(decay_copy(std::forward<F>(func)),
+                                  decay_copy(std::forward<Args>(args))...))
+        );
+      }
 
       /**
        * Move the thread id to this instance.
@@ -428,12 +441,6 @@ namespace rtems
       void start_thread(state_ptr s);
     };
 
-    template <class T>
-    inline typename std::decay<T>::type
-    decay_copy(T&& t) {
-      return std::forward<T>(t);
-    }
-
     template<typename F, typename... Args>
     thread::thread(F&& func, Args&&... args)
       : id_(0)  {
@@ -445,17 +452,6 @@ namespace rtems
       );
     }
 
-    template<typename A, typename F, typename... Args,
-             class = thread::enable_if_attributes<A>>
-    thread::thread(A&& attr, F&& func, Args&&... args)
-      : id_(0) {
-      start_thread(
-        make_state(attr,
-                   make_invoker(decay_copy(std::forward<F>(func)),
-                                decay_copy(std::forward<Args>(args))...))
-      );
-    }
-
     inline std::thread::id thread::get_id() const noexcept {
       return std::thread::id(id_.id_);
     }
-- 
2.34.1



More information about the devel mailing list