You need to invoke the member function on an instance
template<class T>
int fncatcher(T fun)
{
stamp s;
fun(s, 1);
return 0;
}
or make it static:
class stamp //:virtual public unary_function<const int,bool>
{
public:
static bool stmp(const int vl) const
{
return false;
}
};