function object(template class)