#include <iostream>
using namespace std;
template<bool>
class SumPolicy;
template<>
class SumPolicy<false>
{
public:
SumPolicy() {
i = 1;
}
int i;
};
void main()
{
SumPolicy<true> s;
cout<<s.i<<endl;
}
编译结果:
error C2079: 's' uses undefined class 'SumPolicy<1>'
当primary template只有申明没有定义的时候,偏特化就可以在编译的时候判断某些值的真伪大小
例如 SumPolicy(Var),当var在编译的时候为true是,就会产生编译错误, 指出SumPolicy<true>未定义
当然,以上效果都是在primary template未定义的前提下