Как захватить аргументы функции и сохранить указатель на функцию для последующего выполнения в C ++ 11? - PullRequest
2 голосов
/ 01 декабря 2019

Мое требование - хранить некоторые функции для последующего выполнения с предопределенными аргументами. Вот что я пробовал

void doSomething(int i, int j) {
    std::cout << "Sum " <<  i + j << std::endl;
}

int main(int argc, char *argv[]) {
    std::vector<std::function<void(int, int)>> functionVector;

    functionVector.push_back(std::bind(doSomething, 1, 2));
    functionVector.push_back(std::bind(doSomething, 4, 2));

    functionVector[0]();
    functionVector[1]();
}

Однако это не компилируется и выдает следующую ошибку

error: no matching function for call to object of type 'std::__1::__vector_base<std::__1::function<void (int, int)>,
      std::__1::allocator<std::__1::function<void (int, int)> > >::value_type' (aka 'std::__1::function<void (int, int)>')
    functionVector[0]();
    ^~~~~~~~~~~~~~~~~

Как мне добиться этого в C++11/14?

...