Если вы хотите, чтобы одна функция выполняла разные функции для фиксированного числа типов, вы хотите использовать перегруженные функции, а не шаблоны.
void test(int)
{
std::cout << "INT";
}
Если у вас есть нормальное значение по умолчанию, которое работает более чем с одним типом, вы можете использовать специализацию шаблонов. У вас уже есть шаблон структуры, обертывающий функции, , что, как правило, хорошая идея .
template <typename T>
struct TemplateTest
{
void test(T a)
{
std::cout << "OTHER";
}
};
template<>
struct TemplateTest<int>
{
void test(int a)
{
std::cout << "INT";
}
};
Если, как в этом очень специфическом случае упрощения, все, что отличается, - это строка, вы можете использовать переменные шаблоны:
template<typename T>
constexpr char* Typename = "DEFAULT";
template<>
constexpr char* Typename<int> = "INT";
template <typename T>
struct TemplateTest
{
void test(T a)
{
std::cout << Typename<T>;
}
};
Живой пример последнего здесь . Вы видите, что, вероятно, хотели, чтобы функция test
была static
.