重点:
1.constexpr 函数支持在编译期间完成计算
2.特例化是模板中一种定义
using namespace std;
//编译期进行判断
constexpr bool isPrime(unsigned int p)
{
for (unsigned int d=2;d<=p/2;++d)
{
if (p % d == 0)
{
return false;
}
}
return p > 1;
}
template<int sz, bool = isPrime(sz)>
struct Helper;
//特例化
template<int sz>
struct Helper<sz,false>
{
int num = 10;
string name = "不是质数";
};
//特例化
template<int sz>
struct Helper<sz, true>
{
int num = 20;
string name = "质数";
};
int main()
{
Helper<20> first;
Helper<7> second;
cout << "first name :" << first.name << endl;
cout << "second name :" << second.name << endl;
return 0;
}