Следующий код работает отличностанд :: привязывать разрешение перегрузки
#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);
Это не
#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);
Я пытался играть с синтаксисом, чтобы попытаться явно решить, какие функции я хочу в код, который пока не работает без удачи. Как написать строку привязки, чтобы выбрать вызов, который принимает два целых аргумента?
'A :: оператор()' не относится к одной функции, но семейство функций: I подумайте, что вам нужно отбросить его, чтобы «выбрать» правильную перегрузку. Я не проверяю это как ответ, поскольку я не знаком с C++ 0x, и я, возможно, не знаю более элегантного решения. – icecrime