0

The function i am writing below is made to time how long it takes to process a function.

```
// return type for func(pointer to func)(parameters for func), container eg.vector
clock_t timeFuction(double(*f)(vector<double>), vector<double> v)
{
auto start = clock();
f(v);
return clock() - start;
}
```

This is the function i want to test in my timeFunction.

```
template<typename T>
double standardDeviation(T v)
{
auto tempMean = mean(v); //declared else where
double sq_sum = inner_product(v.begin(), v.end(), v.begin(), 0.0);
double stdev = sqrt(sq_sum / v.size() - tempMean * tempMean);
return stdev;
}
```

standardDiviation was made with a template so it can accept any c++ container and i want to do the same with timeFunction, so i tried the following.

```
template<typename T>
clock_t timeFuction(double(*f)(T), T v)
{
auto start = clock();
f(v);
return clock() - start;
}
```

but this gives me errors like cannot use function template "double standardDiviation(T)" and could not deduce template argument for "overloaded function"

This is how i called the function in main.

```
int main()
{
static vector<double> v;
for( double i=0; i<100000; ++i )
v.push_back( i );
cout << standardDeviation(v) << endl; // this works fine
cout << timeFuction(standardDeviation,v) << endl; //this does not work
}
```

how do i fix the timeFunction so it works with any c++ container. Any help is greatly appreciated.