summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/thread.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/include/rtems/thread.hpp')
-rw-r--r--cpukit/include/rtems/thread.hpp32
1 files 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_);
}