Рассмотрите этот код:
Код: Выделить всё
template
void force1(N a);
template
using ForceType = decltype(force1);
template
ForceType force2;
template
void force2(N a)
{}
Код: Выделить всё
:11:16: error: 'template void force2(N)' conflicts with a previous declaration
11 | void force2(N a)
| ^
:8:14: note: previous declaration 'template ForceType force2'
8 | ForceType force2;
| ^~~~~~
Compiler returned: 1
Когда я использую конкретный тип в объявлении Force2:
Код: Выделить всё
template
void force1(N a);
template
using ForceType = decltype(force1);
ForceType force2;
void force2(int a)
{}
Подробнее здесь: https://stackoverflow.com/questions/781 ... fining-the