У меня есть длинное объявление функции шаблона:
template <typename T> void foo(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
без перегрузок. и я хочу явно создать его экземпляр. Я могу написать (скажем, для T
= int
):
template void foo<int>(lots ofargs, goin here, andeven more, ofthese arguments, they just, dont stop);
Но я действительно не хочу копировать это длинное объявление. Я бы хотел сказать что-то вроде:
template <typename T> using bar = decltype(foo<T>);
а потом:
template bar<int>;
Теперь первая строка компилируется (GCC 4.9.3), а вторая нет. Могу ли я заставить его работать как-то? Или я могу использовать decltype()
какой-то другой способ избежать копирования объявления для создания экземпляра?
Примечание. Я намеренно использовал пример, в котором вы не можете вывести тип только из аргументов, так как я хочу, чтобы любое решение поддерживало и этот случай.