假设我们有一个模板函数:
template<typename T1, typename T2, typename T3>
T3 such_fun(T1 a, T2 b) {
// do something...
}
现在我们想将它用作另一个模板中的参数,例如
template<typename T1, template<typename, typename, typename> some_function>
void big_fun(T1 a) {
// some code...
a = some_function<T1, T1, T1>(a, a);
// some code...
}
是否可以?
我知道我可以使用带有已定义 () 运算符的结构。我只是对功能感到好奇。
编辑:
当我写这个问题时,我的朋友找到了一个部分解决方案:
template<typename T1, T1 (*some_function)(T1, T1)>
void big_fun(T1 a) {
// some code...
a = some_function(a, a);
// some code...
}
但仍然 - 我很好奇是否有可能在调用之前没有实现函数类型。例如 - 我可能想用各种类型组合调用传递的模板:
template<typename T1, typename T2, template<typename, typename, typename> some_function>
void big_fun(T1 a, T2 b) {
// some code...
a = some_function<T1, T1, T1>(a, a);
a = some_function<T1, T2, T1>(a, b);
b = some_function<T2, T2, T2>(b, b);
b = some_function<T2, T1, T2>(b, a);
// some code...
}