C++11 - a good example of using std::function

less than 1 minute read

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
struct Wanderer
{
    explicit Wanderer(std::vector<std::function>& update_loop)
    {
        update_loop.emplace_back([this](float dt) { update(dt); });
    }
    void update(float dt);
};
struct Diver
{
    explicit Diver(std::vector<std::function>& update_loop)
    {
        update_loop.emplace_back([this](float dt) { update(dt); });
    }
    void update(float dt);
};
int main()
{
    std::vector<std::function> update_loop;
    Wanderer wanderer{update_loop};
    Diver diver{update_loop};
    while (true)
    {
        for (auto & function : update_loop)
        {
            function(0.016f);
        }
    }
}