我有一个工厂类,它需要用连续的模板参数实例化几个模板,这些模板参数是简单的整数。如何在不展开整个循环的情况下实例化此类模板函数?
唯一能想到的就是使用boost预处理器。你能推荐一些不依赖于预处理器的东西吗?
谢谢
最佳答案
模板参数必须是编译时常量。目前没有编译器将循环计数器变量视为常量,即使在展开之后也是如此。这可能是因为在模板实例化期间必须知道常量,这发生在循环展开之前。
但是可以构造一个“递归”模板并以特化作为结束条件。但即便如此,循环边界也需要是编译时间常量。
template<int i>
class loop {
loop<i-1> x;
}
template<>
class loop<1> {
}
loop<10> l;
将从循环<10>到循环<1>创建十个模板类。
关于C++在循环中实例化模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1774882/