Могу ли я частично специфицировать шаблон для не всех нетиповых параметров

template<int, int>
struct T;

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

я хочу чтобы это работало

typedef T<1, 0> t;

и это вызвать ошибку времени компиляции

typedef T<1, 2> t;

РЕДАКТИРОВАТЬ, я имею в виду, я хочу, чтобы второй параметр был 0. и я не могу использовать функции C ++ 11.

0

Решение

Ваш вопрос не слишком понятен. Вы ищете это?

template <int, int>
struct T;

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

Другие решения

Ты можешь использовать static_assert утверждать аргументы шаблона.

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

По вопросам рекламы [email protected]