[PATCH] thread.hpp: Fix redefinition of default argument
Chris Johns
chrisj at rtems.org
Sat Mar 19 07:27:21 UTC 2022
Ok to push
Thanks
Chris
> On 19 Mar 2022, at 2:16 am, Sebastian Huber <sebastian.huber at embedded-brains.de> wrote:
>
> 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