我正在尝试设计一个模板类,它存储一个一元函数(指向它的指针)及其参数类型和输出参数类型。然后我尝试使用某个一元函数创建此类的对象(请参阅源代码)。一切似乎都很成功,但胃口却越来越大。我想修改(可能是一个类或其他东西),以便它不再需要模板参数。毕竟,假设功能std::ptr_fun
可以。
#include <iostream>
template <typename arg0, typename res0>
struct F1 {
typedef arg0 arg;
typedef res0 res;
typedef arg(*func)(res x);
func f;
F1(func _f) : f(_f) {}
res0 operator()(arg0 x) { return f(x); }
};
char foo(int u) { return 's'; }
template<typename arg0, typename res0>
F1<arg0, res0> F1_func(typename F1<arg0, res0>::func _func) {
return F1<arg0, res0>(_func);
}
int main() {
auto F1 = F1_func<char,int>(foo);
}
也就是说,我希望它能像这样工作:
int main() {
auto F1 = F1_func(foo);
}
如果你这样写,对你有好处吗?
您正在传递指向函数的指针,而不是结构...
F1_func
不需要中间函数;在当前版本的 C++ 中,模板参数派生自构造函数参数。在线编译器