0
template<int, int> 
struct T;

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

我想让这个工作

typedef T<1, 0> t;

这会导致编译时错误

typedef T<1, 2> t;

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

4

2 回答 2

1

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

template <int, int>
struct T;

template<int x>
struct T<x, 0>
{
  // Definition of the struct for the allowed case
};
于 2013-07-24T10:50:24.690 回答
0

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

template<int A, int B> 
struct T
{
   static_assert(A > B, "Raised error because A is not bigger than B)";
}
于 2013-07-24T10:17:55.600 回答