boost::bind - wyjaśnienie działania

0
 
<pre>class image;

class animation
{
public:

    void advance(int ms);
    bool inactive() const;
    void render(image & target) const;
};

std::vector<animation> anims;

template<class C, class P> void erase_if(C & c, P pred)
{
    c.erase(std::remove_if(c.begin(), c.end(), pred), c.end());
}

void update(int ms)
{
    std::for_each(anims.begin(), anims.end(), boost::bind(&animation::advance, _1, ms));
    erase_if(anims, boost::mem_fn(&animation::inactive));
}

void render(image & target)
{
    std::for_each(anims.begin(), anims.end(), boost::bind(&animation::render, _1, boost::ref(target)));
}</pre>

Pytanie :
Co zostanie podstawione za _1 w funkcji bind ? Mógłby ktoś wyjaśnić ?

0

Placeholder dla argumentu podanego później. Dzięki temu pierwszy argument podany do utworzonego funktora będzie przekazany do funkcji.

Tutaj zdaje się to ładnie objaśnione: http://stackoverflow.com/questions/18680607/role-of-placeholder-in-boostbind-in-the-following-example

0

Co zostanie podstawione za _1 w funkcji bind ? Mógłby ktoś wyjaśnić ?

Kolejny element z kolekcji, wypluty przez for_each.

PS. Nie stawiamy spacji przed znakiem zapytania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1