El siguiente código funciona bienstd :: bind
#include <functional>
using namespace std;
using namespace std::placeholders;
class A
{
int operator()(int i, int j) { return i - j; }
};
A a;
auto aBind = bind(&A::operator(), ref(a), _2, _1);
Esto no
#include <functional>
using namespace std;
using namespace std::placeholders;
class A
{
int operator()(int i, int j) { return i - j; }
int operator()(int i) { return -i; }
};
A a;
auto aBind = bind(&A::operator(), ref(a), _2, _1);
He tratado de jugar con la sintaxis para tratar de resolver de forma explícita que funcionan en el que quiero código que no funciona sin suerte hasta el momento. ¿Cómo escribo la línea de enlace para elegir la llamada que toma los dos argumentos enteros?
':: un operador()' no se refiere a una sola función, pero a una familia de funciones: I piense que tiene que lanzarlo para 'seleccionar' la sobrecarga correcta. No estoy validando esto como una respuesta ya que no estoy familiarizado con C++ 0x y es posible que no tenga conocimiento de una solución más elegante. – icecrime