constexpr bool IsPrime(size_t Tar)
{
    for(size_t i = 2;i< Tar/2;++i)
    {
        if(Tar %i ==0)
        {
            return false;
        }
    }
    return Tar > 1;
}
template<int Sz ,bool = IsPrime(Sz)>
struct Helper{
    int value = 1;
};
template<int Sz>
struct Helper<Sz,false>{
    int value = 2;
};
template<int Sz>
struct Helper<Sz,true>{
    int value = 3;
};
int main(int argc, char** argv)
{
   Helper<2> h1;
   Helper<9> h2;
   std::cout<<h1.value<<std::endl;
   std::cout<<h2.value<<std::endl;
}
IsPrime(Sz) It is the default value of the main template parameter. Why does the calculated result finally match the template Helper<Sz, false>/Helper<Sz, true>. Is it because the editor matches a more specific template after getting the template parameters
