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.