template<size_t p,size_t d>structdoIsPrime{staticboolconstexpr value =(p%d!=0)&& doIsPrime<p,d-1>::value;};template<size_t p>structdoIsPrime<p,2>{staticboolconstexpr value =(p%2!=0);};template<size_t p>structisPrime{staticboolconstexpr value = doIsPrime<p,p/2>::value;};template<>structisPrime<3>{staticboolconstexpr value =true;};template<>structisPrime<2>{staticboolconstexpr value =true;};template<>structisPrime<1>{staticboolconstexpr value =false;};template<>structisPrime<0>{staticboolconstexpr value =false;};intmain(){
cout<<isPrime<3>::value;}