函数模板_构造函数栈溢出

瑞星  金牌会员 | 2023-10-4 13:01:27 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 875|帖子 875|积分 2625

前言

最近写一个任务队列,可以支持存入返回值为void的任意函数对象。需要定义一个Task模板,来存储函数对象以及参数。大致的实现如下:
  1. class Task
  2. {
  3. public:
  4.     template <typename Func, typename... Args>
  5.     Task(Func&& f, Args &&...args)
  6.         : func_(std::bind(std::forward<Func>(f), std::forward<Args>(args)...)) {}
  7.     void operator()()
  8.     {
  9.         func_();
  10.     }
  11. private:
  12.     std::function<void()> func_;
  13. };
复制代码
其中构造函数是一个函数模板,可以在编译的时候,根据传入的函数对象和参数,绑定生成std::function,存储在func_中。
支持形如
[code]auto f1 = [](int i, int j){    std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表