#include <iostream>
#include <string>
using namespace std;

template<class... InitialArgTypes>
void CallWithExtraParameter(void (*funcPtr)(InitialArgTypes..., int), InitialArgTypes... initialArgs)
{
	(*funcPtr)(initialArgs..., 42);
}

void Callee(double a, string b, int c)
{
	cout << a << " " << b << " " << c << endl;
}

int main()
{
	CallWithExtraParameter<double, string>(Callee, 1.0, string("hello world"));
}