Skip to content

Commit 41372f5

Browse files
committed
5
1 parent 855ebcb commit 41372f5

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

taskflowlite/core/async_task.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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

519519
template <typename Mode>
520520
template <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...>)
522522
inline 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

529529
template <typename Mode>
530530
template <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...>)
532532
inline AsyncTask<Mode>::AsyncTask(T&& task, Args&&... args)
533533
: AsyncTask{make_attached_runtime<anchor::none_t>(
534534
/*executor=*/ nullptr,

0 commit comments

Comments
 (0)