Usando std :: bind2nd con referencias

Tengo una clase simple como esta:

class A
{
public:
    void f(const int& n)
    {
        std::cout<<"A::f()" << n <<"\n";
    }
};

Y estoy tratando de usarlo así:

std::vector<A> vec;
A a;
vec.push_back(a);
std::for_each(vec.begin(), vec.end(), std::bind2nd(std::mem_fun_ref(&A::f), 9));

Pero cuando compilo el código, obtengo el siguiente error en algún lugar dentro del archivo de encabezado funcional:

error C2529: '_Right': la referencia a la referencia es ilegal

Si elimino la referencia en el parámetro f () se compila bien. ¿Cómo resuelvo esto? No quiero eliminar la referencia, ya que en mi código real la copia del objeto es bastante costosa. Además, no estoy usando boost.

Respuestas a la pregunta(4)

Su respuesta a la pregunta