C++在循环中实例化模板

Any*_*orn 5 c++ templates factory

我有一个工厂类,需要使用连续的模板参数来实例化几个模板,这些参数是简单的整数.如何在不展开整个循环的情况下实例化这样的模板函数?

唯一可以想到的是使用升压预处理器.你能推荐一些不依赖于预处理器的东西吗?

谢谢

Gun*_*iez 8

模板参数必须是编译时常量.目前,即使在展开后,编译器也不会将循环计数器变量视为常量.这可能是因为必须在模板即时期间知道常量,这在循环展开之前发生.

但是可以构造一个"递归"模板并将特化作为结束条件.但即使这样,循环边界也需要编译时间常数.

template<int i>
class loop {
    loop<i-1> x;
}

template<>
class loop<1> {
}

loop<10> l;
Run Code Online (Sandbox Code Playgroud)

将从循环<10>到循环<1>创建十个模板类.