Где живут функторы, созданные std :: bind?

Указатель на функцию может указывать на что угодно: от свободной функции, объекта функции, обертки до вызова функции-члена.

Однако созданные функторы std :: bind могут иметь как состояние, так и пользовательские. Где находится это состояние и кто его удаляет?

Рассмотрим приведенный ниже пример - будет ли удаляться состояние (число 10) при удалении вектора? Кто знает, как вызвать функтор, а не указатель функции?

#include <iostream>
#include <functional>
#include <vector>
using namespace std;
using namespace std::placeholders;
class Bar
{
    public:
    void bar(int x, int y) { cout << "bar" << endl; }
};
void foo(int baz){ cout << "foo" << endl; }
int main() {
    typedef std::function<void(int)> Func;

    std::vector<Func> funcs;
    funcs.push_back(&foo); // foo does not have to be deleted
    Bar b;
    // the on-the-fly functor created by bind has to be deleted
    funcs.push_back(std::bind(&Bar::bar, &b, 10, _1)); 

    // bind creates a copy of 10. 
    // That copy does not go into the vector, because it's a vector of pointers.
    // Where does it reside? Who deletes it after funcs is destroyed?

    return 0;
}

Ответы на вопрос(2)

Ваш ответ на вопрос