C 函数对象模板参数扣除样式
C++ function-object template argument deduction style
我正在尝试通过采用更有功能的编程样式将临时编程提炼成模块化和可重复使用的组件,但这让我写了两次。
作为一个例子,我有一个状态stateT state
,该状态由可配置的函数-Object step
。
template<typename sT, typename T1, typename T2>
struct Step {
T1 func1;
T2 func2;
Step(T1 f1, T2 f2) : func1(f1), func2(f2) {}
sT operator()(sT state) {
state.A = func1(state.A);
... using func2() and internals of state ...
}
};
这样我就不必键入
auto step = Step<stateT,typename_of_func1,typename_of_func2>{func1, func2};
我做了make_stepper
template<typename sT, typename T1, typename T2>
auto make_stepper(sT state, T1 func1, T2 func2) {
return Step<sT,T1,T2>(func1, func2);
}
现在我可以写
stateT state{...constructor arguments...};
auto step = make_stepper(state, func1, func2);
state = state(step);
为了提供一个不错的接口,我最终为每个模板函数对象X
编写make_X
功能。这是好的风格还是我只是在骗自己?我可以避免编写make_X
功能吗?还是我应该更改整个方法?
这是通常在C 标准库中完成的方式。因此,您处于正确的轨道上,无法避免编写Make_函数,因为推论无法按要求直接适用于类/结构。
相关文章:
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 解压缩 C 样式数组以及C++中的参数包
- C++ C 样式数组作为语法错误的参数
- 限制C++中允许的模板参数是否被认为是不良样式?
- C 样式将此或shared_from_this作为函数参数
- 如何将初始值设定项与右值引用参数一起使用 // 为什么不能使用另一个 C 样式数组变量初始化 C 样式数组
- Qt样式表和"一个参数"问题
- 为什么我可以通过这样的字符串参数?这种样式安全吗?
- C 函数对象模板参数扣除样式
- 具有列表参数C++11/C++14样式的求和函数
- C++,哪种参数样式更好,通过复制还是通过常量引用
- C/C++样式--修改函数参数
- C++样式:在构造函数主体中使用参数或成员
- 向 C 样式可变参数列表添加额外的参数
- C++ 传递 C 样式字符串作为参数
- 构造函数参数样式
- 为通过引用设置参数的函数命名的样式
- CreateWindow()样式参数被忽略
- 函数调用参数中的构造函数样式转换