就像这些代码一样,在模板专门化定义的类型中,将是类型(在标签1处),代码test_two<N+1, Max, std::size_t>
继续匹配模板专门化(struct test_two<N,Max,std::size_t>
)并计算test_two<N+1, Max, std::size_t>
的类型,依此类推?
template<std::size_t N, std::size_t Max, typename T>
struct test_two
{
};
template<std::size_t N, std::size_t Max>
struct test_two<N,Max,std::size_t>
{
using type = test_two<N+1, Max, std::size_t> //label:1
};
如上所述
答案 0 :(得分:0)
声明using type = test_two<N+1, Max, std::size_t>;
不需要右侧类型是完整的,因此它不会实例化test_two<N+1, Max, std::size_t>
的定义,而仅实例化其声明。因此,没有无限递归。