模板专业化中的类型将继续计算吗?

时间:2019-07-17 09:37:15

标签: c++ c++11 recursion variadic-templates

就像这些代码一样,在模板专门化定义的类型中,将是类型(在标签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
}; 

如上所述

1 个答案:

答案 0 :(得分:0)

声明using type = test_two<N+1, Max, std::size_t>;不需要右侧类型是完整的,因此它不会实例化test_two<N+1, Max, std::size_t>的定义,而仅实例化其声明。因此,没有无限递归。