Есть большие проблемы с этим кодом, чем кажется на первый взгляд.Например, если вы должны были перенаправить возвращаемое значение Functional в другую функцию, то вы не можете просто специфицировать Functional для void - весь лот должен быть указан для void, так как если у вас есть функция, которая принимает void, вы можетеНе передавайте это пустое выражение.И, конечно, вы не можете создавать переменные с void и тому подобное.В целом, проще сказать, что void незаконен, чем пытаться с ним справиться.
Существуют и другие ответы, в которых уже есть явный ответ по специализации.