在不模板化类的情况下存储 lambda
Storing lambda without templatizing class
class what {
template<class F>
what(F&& f) {}
};
这里F
是一个lambda,如何在不模板化整个类的情况下将其存储在成员变量中?
这就是std::function
的用途。假设您希望what
存储一个可调用对象,该可调用对象将int
作为参数并返回void
。然后你会写这样的东西:
class what
{
public:
template<class T>
what(T&& t) : callback(std::forward<T>(t)) {}
private:
std::function<void(int)> callback;
};
您甚至可以使构造函数本身不是模板:
class what
{
public:
what(std::function<void(int)> callback) : callback(std::move(callback)) {}
private:
std::function<void(int)> callback;
};
相关文章:
- 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小/最大值?
- 如何在不知道大小的情况下读取文本文件并存储到数组中
- 在不模板化类的情况下存储 lambda
- 如何在不知道Arduino中知道其大小的情况下创建数组和存储值
- 如何在给定任意数量的整数的情况下创建一个唯一键?并使用该键存储,然后从地图中查找
- 我可以在不手动将它们分配在堆上的情况下存储iostreams集合
- 如何在不复制的情况下将过滤向量的结果存储在另一个向量中
- 在这种情况下,将数据存储在诸如SQLite之类的数据库中,还是存储在平面文本文件中更好
- 对象生存期,在这种情况下重用存储
- 在这种情况下,"使用"在做什么,正在存储什么?
- 理解在c++中的真实情况下类变量是如何存储在内存中的
- 在不存储的情况下解析文本文件 (tftp)
- 如何在没有临时设置的情况下将集合差异 s1-s2 存储在 s1 中
- 为什么标准允许我在没有析构函数的情况下自由存储分配类
- 在不声明变量的情况下存储"variables"
- 在不使用额外存储器的情况下,将矩阵存储在一维数组中
- 在不先销毁对象的情况下重用对象的存储是 UB 吗?
- 我如何在不使用 cin、getline 等的情况下存储值
- c++ 11:在不知道其容器的情况下存储迭代器
- 是否有可能在没有World对象的情况下存储Box2D/Farseer Body对象