1- // / @file async_task.hpp
1+ // / @file async_task.hpp
22// / @brief 异步任务句柄 AsyncTask —— 动态 Work 节点的引用计数式值类型包装。
33// / @author wicyn
44// / @contact https://github.com/wicyn
@@ -58,7 +58,7 @@ class AsyncTask {
5858 // / @param task 可调用对象。
5959 // / @param args 任务参数。
6060 template <typename T, typename ... Args>
61- requires (capturable<T, Args...> && basic_invocable<T, Args...>)
61+ requires (!any_async_task<std:: remove_cvref_t <T>> && capturable<T, Args...> && basic_invocable<T, Args...>)
6262 explicit AsyncTask (T&& task, Args&&... args);
6363
6464 // / @brief 用运行时可调用对象构造异步任务(可通过 Runtime 动态操纵图结构)。
@@ -68,7 +68,7 @@ class AsyncTask {
6868 // / @param task 可调用对象(签名为 void(Runtime&, Args...) 或其返回版)。
6969 // / @param args 任务参数。
7070 template <typename T, typename ... Args>
71- requires (capturable<T, Args...> && runtime_invocable<T, Args...>)
71+ requires (!any_async_task<std:: remove_cvref_t <T>> && capturable<T, Args...> && runtime_invocable<T, Args...>)
7272 explicit AsyncTask (T&& task, Args&&... args);
7373
7474 // / @brief 用任务图构造,执行一次。
@@ -518,7 +518,7 @@ inline AsyncTask<Mode>::AsyncTask(Work* w) noexcept : m_work{w} {
518518
519519template <typename Mode>
520520template <typename T, typename ... Args>
521- requires (capturable<T, Args...> && basic_invocable<T, Args...>)
521+ requires (!any_async_task<std:: remove_cvref_t <T>> && capturable<T, Args...> && basic_invocable<T, Args...>)
522522inline AsyncTask<Mode>::AsyncTask(T&& task, Args&&... args)
523523 : AsyncTask{make_attached_basic<anchor::none_t >(
524524 /* executor=*/ nullptr ,
@@ -528,7 +528,7 @@ inline AsyncTask<Mode>::AsyncTask(T&& task, Args&&... args)
528528
529529template <typename Mode>
530530template <typename T, typename ... Args>
531- requires (capturable<T, Args...> && runtime_invocable<T, Args...>)
531+ requires (!any_async_task<std:: remove_cvref_t <T>> && capturable<T, Args...> && runtime_invocable<T, Args...>)
532532inline AsyncTask<Mode>::AsyncTask(T&& task, Args&&... args)
533533 : AsyncTask{make_attached_runtime<anchor::none_t >(
534534 /* executor=*/ nullptr ,
0 commit comments