Допустим, нам нужен шаблон функции, который должен возвращать целое число в зависимости от типа:
template<typename T>
int get_type();
Далее, мы специализируем его на паре типов:
template<>
int get_type<int>()
{
return TYPE_INT;
}
// And so on for other types...
И это хорошо работает, но не для типов массивов. Я могу сделать следующее:
template<>
int get_type<char[]>()
{
return TYPE_STRING;
}
и компилятор "согласен" с этим, а компоновщик - нет. Поскольку тип char[]
отличается, например, от char[5]
.
Есть ли способ реализовать этот шаблон функции без параметров функции? Т.е. я знаю, что мы можем сделать что-то вроде этого:
template<typename T>
int get_type(const T&);
Но на самом деле параметр функции здесь не нужен (не используется).
РЕДАКТИРОВАТЬ:
Я использую C ++ 11.