template<int, int>
struct T;
template<>
struct T<?, ?> {};
я хочу чтобы это работало
typedef T<1, 0> t;
и это вызвать ошибку времени компиляции
typedef T<1, 2> t;
РЕДАКТИРОВАТЬ, я имею в виду, я хочу, чтобы второй параметр был 0. и я не могу использовать функции C ++ 11.
Ваш вопрос не слишком понятен. Вы ищете это?
template <int, int>
struct T;
template<int x>
struct T<x, 0>
{
// Definition of the struct for the allowed case
};
Ты можешь использовать static_assert утверждать аргументы шаблона.
template<int A, int B>
struct T
{
static_assert(A > B, "Raised error because A is not bigger than B)";
}