专门化一个模板class?
Specialize a template class?
我正在尝试编写一个无需循环或递归函数调用即可输出 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?
专门化 class 模板本身:
template <int N>
class NumberGenerator : public NumberGenerator<N-1>{
public:
NumberGenerator();
};
template <>
class NumberGenerator<1> {
public:
NumberGenerator();
};
我正在尝试编写一个无需循环或递归函数调用即可输出 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?
专门化 class 模板本身:
template <int N>
class NumberGenerator : public NumberGenerator<N-1>{
public:
NumberGenerator();
};
template <>
class NumberGenerator<1> {
public:
NumberGenerator();
};