我工作的一类,通过这样的队列中结合他们的时间表功能:如何使用标准库的std :: bind并保存返回类型?
std::queue <void()> q;
template<typename R,typename... ArgsT>
void
schedule(R& fn, ArgsT&... args)
{
q.push(std::bind(fn, std::forward<ArgsT>(args)...));
};
template<typename R,typename... ArgsT>
void
schedule(R&& fn, ArgsT&&... args)
{
q.push(std::bind(fn, std::forward<ArgsT>(args)...));
};
正如你看到我在queue
void()
作出的类型,使其持有任何类型的函数对象,但现在当我执行它时,我无法得到回报。我该怎么做才能解决这个问题?
注:我不想使用像boost这样的外部库,我不知道用户会通过哪种函数。
如果您不知道类型,您希望如何处理返回值? – Kevin
在C++ 17或'boost :: any'中有'std :: any'。但似乎你不想使用它们中的任何一个。 – Rakete1111
@Kevin这是队列中的类调度函数的一部分,并且同时执行它们,用户可以在函数执行完成之后获得返回值,所以我想要一些如何保存它以获取std :: future并返回它给用户 –