Нет, нет. Причина в том, что все, что используется в качестве вашего HashFn, должно принимать один аргумент, который является константной ссылкой на объект в контейнере. X::hash
принимает единственный аргумент, который является постоянным указателем на объект в контейнере (указатель this
является неявным первым аргументом в этом случае), поэтому использование этой функции само по себе невозможно .
Вы, вероятно, используете магию связывания, используя boost :: lambda и boost :: bind. Я не совсем уверен, как, но это будет выглядеть примерно так:
boost::bind(&X::hash, &_1);
Который создает объект функции, который будет вызывать X :: hash с указателем.