Недавно я заметил следующую проблему со специализациями шаблонов.
Обратите внимание, если у нас есть следующая специализация для f
, а имя параметра шаблона может быть очень длинным, возможно, полученным из других шаблонов.
template <class T> void f(T t) {}
template <>
void f<VeryLongType>(VeryLongType t)
{
using T = VeryLongType;
// ...
}
Обратите внимание, что это очень длинное имя типа дублируется 3 раза.Также, если f
возвращает значение этого типа, то будет введено другое дублирование (auto
будет обходным путем).
Мне интересно, существует ли какой-то упрощенный синтаксис для этого, чтобы не было дублированиянеобходимо?
Может быть так:
template <>
void f<T = VeryLongType>(T t)
{
// ...
}