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

标签 c++ templates factory

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

唯一能想到的就是使用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/

相关文章:

ruby-on-rails - 与factory_girl一起使用固定装置

c++ - 是否预计 boost::thread_specific_ptr<>::get() 的使用会很慢?有什么解决办法吗?

c++ - 找不到过程入口点 __gxx_personality_v0

c++ - 通过 websocket 发送 STOMP 帧

c++ - 针对特定类型的模板功能的特化

c++ - 在 C++ 工厂方法的实现中遇到继承问题

c# - "Factory Method"设计模式

C++ 窗体 : Why doesn't the richtextbox update text instantly?

c++ - 获取模板参数的字符串表示

c++ - 如何为函数类型使用模板参数?