I have the following integral function with Simpson's rule:

```
typedef double real;
typedef real real_func(real);
real Integral(real_func func, real a, real b, unsigned int N = 1000)
{...}
```

It works like:

```
real myfunc(real x) { ... }
Integral(sin,1,2);
Integral(myfunc,1,2);
```

But does not work with a public class function:

```
class myclass{
public:
real classfunction(real);
};
real mylass::classfunction(real x) {...};
```

The following gives error:

```
myclass probe;
Integral(probe.classfunction,1,2);
```

The compiler error message is:

error: argument of type `real (EOS::)(real)'

does not match `real (*)(real)'