我可以为所有非类型参数部分指定模板

时间:2013-07-24 10:10:45

标签: c++ templates partial-specialization

template<int, int> 
struct T;

template<> 
struct T<?, ?> {};

我想要这个工作

typedef T<1, 0> t;

这会导致编译时错误

typedef T<1, 2> t;

编辑,我的意思是我希望第二个参数为0.我不能使用C ++ 11的功能。

2 个答案:

答案 0 :(得分:1)

你的问题不太清楚。你在找这个吗?

template <int, int>
struct T;

template<int x>
struct T<x, 0>
{
  // Definition of the struct for the allowed case
};

答案 1 :(得分:0)

您可以使用 static_assert 来断言模板参数。

template<int A, int B> 
struct T
{
   static_assert(A > B, "Raised error because A is not bigger than B)";
}