模板偏特化的一个作用

来源:互联网 发布:发改委大数据主任 编辑:程序博客网 时间:2024/05/16 01:48

#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未定义的前提下