【发布时间】:2021-07-09 15:28:23
【问题描述】:
我正在尝试编写一种任务图。当我放置新任务时,我希望能够一次添加不同的数量并获得一个包含每个添加任务的句柄的元组。
我已经为一项任务编写了一个基本案例,并使用调用基本案例的可变参数模板参数进行重载。
template<typename Task>
node<Task> emplace(Task&& task) {
return node<Task>{std::move(task)};
}
template <typename... Tasks, std::enable_if_t<(sizeof...(Tasks) > 1)>>
auto emplace(Tasks&&... tasks) {
return std::make_tuple(emplace(std::forward<Tasks>(tasks))...);
}
当我现在完成一项任务时
emplace([](){ something cool; });
我没有收到错误,但是当我添加两个或更多任务时
emplace(
[](){ task a; },
[](){ task b; }
);
我收到一条错误消息,提示 template argument deduction/substitution failed
【问题讨论】:
标签: c++ templates variadic-templates