Шаблоны классов не могут быть перегружены (шаблоны функций могут), но только специализированные.Если вы хотите частичная специализация , это должно быть
template <typename E>
class Test<E, E>
{
...
};
и
template<typename E>
void Test<E, E>::Output()
{
...
}
И при его использовании вы всегда должны указывать два аргумента шаблона в качестве основного шаблонабыть объявленнымт.е.
Test<int, int> t(&a, &str); // the partial specialization will be used
РЕДАКТИРОВАТЬ
Можно ли установить второй шаблон в качестве определенного типа данных (например, std::string
)?и используйте Test
как Test<int, std::string>
Да.например,
template <typename E>
class Test<E, std::string>
{
...
};
и
template<typename E>
void Test<E, std::string>::Output()
{
...
}
LIVE