1[/ 2 / Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. 3 / Copyright (c) 2003-2008 Peter Dimov 4 / 5 / Distributed under the Boost Software License, Version 1.0. (See 6 / accompanying file LICENSE_1_0.txt or copy at 7 / http://www.boost.org/LICENSE_1_0.txt) 8 /] 9 10[section:examples Examples] 11 12[section Using bind with standard algorithms] 13 14 class image; 15 16 class animation 17 { 18 public: 19 void advance(int ms); 20 bool inactive() const; 21 void render(image & target) const; 22 }; 23 24 std::vector<animation> anims; 25 26 template<class C, class P> void erase_if(C & c, P pred) 27 { 28 c.erase(std::remove_if(c.begin(), c.end(), pred), c.end()); 29 } 30 31 void update(int ms) 32 { 33 std::for_each(anims.begin(), anims.end(), boost::bind(&animation::advance, _1, ms)); 34 erase_if(anims, boost::mem_fn(&animation::inactive)); 35 } 36 37 void render(image & target) 38 { 39 std::for_each(anims.begin(), anims.end(), boost::bind(&animation::render, _1, boost::ref(target))); 40 } 41 42[endsect] 43 44[section Using bind with Boost.Function] 45 46 class button 47 { 48 public: 49 ``[@boost:/libs/function/index.html `boost::function`]``<void()> onClick; 50 }; 51 52 class player 53 { 54 public: 55 void play(); 56 void stop(); 57 }; 58 59 button playButton, stopButton; 60 player thePlayer; 61 62 void connect() 63 { 64 playButton.onClick = boost::bind(&player::play, &thePlayer); 65 stopButton.onClick = boost::bind(&player::stop, &thePlayer); 66 } 67 68[endsect] 69 70[endsect] 71