让我们asssume,我们有一个模板funcion:是否可以将函数模板作为模板参数传递?
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...
}
我不明白你在说什么的话.. -1,你能为我们提供的是不流利的standarese的ilustration? – lurscher 2012-02-24 17:58:33
@lurscher,因为_you_不明白这是一个可怕的原因downvote。当量子物理学家谈论量子物理学时,我不会低估它,因为我不理解它。 – 2012-02-24 18:04:18
@SethCarnegie,我不同意。我认为这本身就是一个很好的理由。此外,答案也是错误的;问题想要做什么是完全可能的,即使在C++ 03中也是如此。我认为SO的问题与pmr的回答之间存在脱节,因此存在倒退。如果他改善了他的回答,我会非常乐意撤回它 – lurscher 2012-02-24 18:19:40