Шаблон функции имеет только один параметр шаблона, и вы передаете ему 3
аргументы шаблона:
functionA <double, double, double> (1, 1) << "\n";
Почему 3
аргументы шаблона?
Просто напишите:
functionA <double> (1, 1);
Или вы можете просто позволить компилятору выводить аргумент шаблона, как:
functionA(1.0, 1.0); //template argument deduced as double!
functionA(1, 1); //template argument deduced as int!