专门化模板类

Specialize a template class?

本文关键字:专门化      更新时间:2023-10-16

我正在尝试编写一个程序,该程序在没有循环或递归功能的情况下输出1至1000,我想出了这个

#include <iostream>
template <int N>
class NumberGenerator : public NumberGenerator<N-1>{
    public:
    NumberGenerator();
};
template <int N>
NumberGenerator<N>::NumberGenerator(){
    // Let it implicitly call NumberGenerator<N-1>::NumberGenerator()
    std::cout << N << std::endl;
}
template <>
NumberGenerator<1>::NumberGenerator(){
     // How do I stop the implicit call?
     std::cout << 1 << std::endl;
}
int main(){
    NumberGenerator<1000> a; // Automatically calls the constructor
    return 0;
}

问题是,我无法停止链条呼叫(NumberGenerator<1>仍在尝试调用NumberGenerator<0>并无限地流动)。我如何在1时停止链条?

专业化类模板本身:

template <int N>
class NumberGenerator : public NumberGenerator<N-1>{
    public:
    NumberGenerator();
};
template <>
class NumberGenerator<1> {
    public:
    NumberGenerator();
};