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 + inline typename std::decay::type + decay_copy(T&& t) { + return std::forward(t); + } + /** * @brief Create a thread with thread attributes. * @@ -310,7 +316,14 @@ namespace rtems */ template > - 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(func)), + decay_copy(std::forward(args))...)) + ); + } /** * Move the thread id to this instance. @@ -428,12 +441,6 @@ namespace rtems void start_thread(state_ptr s); }; - template - inline typename std::decay::type - decay_copy(T&& t) { - return std::forward(t); - } - template thread::thread(F&& func, Args&&... args) : id_(0) { @@ -445,17 +452,6 @@ namespace rtems ); } - template> - thread::thread(A&& attr, F&& func, Args&&... args) - : id_(0) { - start_thread( - make_state(attr, - make_invoker(decay_copy(std::forward(func)), - decay_copy(std::forward(args))...)) - ); - } - inline std::thread::id thread::get_id() const noexcept { return std::thread::id(id_.id_); }