std::函数参数列表和类型定义
std::function arguments list and typedefs
我有一个这样的typedef:
typedef std::function<int arg1, float arg2> MyFunction;
在我的代码中的某个地方,它是这样使用的:
MyFunction func = [](int arg1, float arg2){ /* do someting */ };
问题是,每次我更改函数的参数数量时(例如,我添加了第三个参数 char arg3) - 我被迫在我使用 MyFunction 的代码中更新它(即使这些参数根本没有使用。
我懒得这样做。有没有办法从它的类型中获取 std::function 的参数列表?(我的意思是)所以函数创建看起来像那样?
MyFunction func = [](MyFunction::args){ /* do someting */ };
从 C++14 开始,您可以使用可变参数多态 lambda:
MyFunction func = [](int arg1, float arg2, auto&&... unused){ /* ... */ };
对于任何以 int, float
开头的签名,这将转换为 std::function<Sig>
。
相关文章:
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 列表参数的类型定义
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 关于 C++ 中的函数类型定义
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 将使用/类型定义限制为类范围
- 模板类型定义?
- C++:模板类的类型定义
- 如何对命名空间限定类型进行类型定义?
- 此递归模板类型定义是否有效C++?
- 具有调整对齐方式的类型定义
- C++从抽象类型定义类成员
- 用于C++代码的 API 监视器类型定义 (XML)
- 如何将result_of与函数类型定义一起使用
- 在C++的适当类型定义位置
- 如何根据模板类型定义浮点常量?
- 如何为缺少预定义运算符而不扩展命名空间"std"的标准类型定义运算符>> (istream &, ...)?
- 参数化类的别名(或类型定义)内部类
- 如果我想从类型"T"定义元素的容器(来自 STL),那么"T"必须使用默认构造函数?