Специализация значений шаблонов

#c #templates

#c #шаблоны

Вопрос:

Возможно ли создать специализацию шаблона для значения без дополнительного типа?

Что-то вроде этого:

 template<typename T>
class foo
{
};

template<>
class foo<0>
{
};
  

Комментарии:

1. Ваш шаблон ожидает тип, какой смысл имеет число?

Ответ №1:

Да, но вы хотите использовать нетипичный параметр шаблона:

 template<int i>
class foo
{
};

template<>
class foo<0>
{
};
  

Ответ №2:

С кодом, который вы показываете, это не имеет смысла. Это, однако, возможно:

 template<int N>
class foo
{
};

template<>
class foo<0>
{
};
  

Ответ №3:

Это быстрее попробовать, чем задавать вопрос здесь. С помощью GCC (g 4.6) я получаю

 temp.cc:7:12: error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class foo'
temp.cc:7:12: error:   expected a type, got '0'
  

Так что, по-видимому, ответ отрицательный

Комментарии:

1. Я сказал «что-то вроде этого», что означает, что это работает не совсем так 🙂 Мне нужно знать, возможно ли это с использованием другого синтаксиса.