这次不确定我是否会使用模板编程。我尝试传递模板模板参数。问题来自一个真正的问题,但我现在将以不同的方式解决这个问题。所以问题或多或少是“学术性的”
首先,我尝试将F_
“存储”在一个将用作模板参数的结构中:
template <class M_, template <class> class F_>
struct Conf{
using F = F_; // Problem 1: F_ is not a type!
using M = M_;
};
然后从结构中读取 F
并用于实例化func
:
template <class CONF> // CONF is a Conf<x, y>
void call(){
using F = typename CONF::F; // Problem 2: F_ is still not a type!
func<F>();
}
func是:
template <template <class> F>
void func(){
F<MyType>::call();
}
问题是:我无法使用“存储”F
。我能做些什么才能在结构中传递F
?
答案 0 :(得分:2)
您应该模仿using
这样的模板:
template <class M_, template <class> class F_>
struct Conf{
template <class T>
using F = F_<T>;
using M = M_;
};