C++ 为什么是C++;递归模板';不行?

C++ 为什么是C++;递归模板';不行?,c++,templates,recursion,C++,Templates,Recursion,我发现并决定详细检查最上面的答案。 我问自己为什么需要结构,并尝试在没有结构的情况下重写代码: #包括 模板作废(标准::ostream&os){ 输出(os); os模板在编译期间展开,而if语句仅在运行时(不同的后期阶段)进行检查。在您的情况下,编译器将尝试不精确地展开,因为没有针对固定值N(过去是1)的函数的具体实现.问题是在运行时计算if条件。当您到达N=1的实例化时,它不知道if语句的第一个块不会执行。它继续实例化out等等,这是可能的,但分支是一个运行时常量编译器将愉快地实例化输出,

我发现并决定详细检查最上面的答案。
我问自己为什么需要结构,并尝试在没有结构的情况下重写代码:

#包括
模板作废(标准::ostream&os){
输出(os);

os模板在编译期间展开,而if语句仅在运行时(不同的后期阶段)进行检查。在您的情况下,编译器将尝试不精确地展开,因为没有针对固定值N(过去是
1
)的函数的具体实现.

问题是在运行时计算
if
条件。当您到达
N=1
的实例化时,它不知道
if
语句的第一个块不会执行。它继续实例化
out
等等,这是可能的,但分支是一个运行时常量编译器将愉快地实例化
输出,这将继续…专门化的全部目的是终止实例化。。