boost::lambda::bind internal object storage
Hello, Can someone explain why I see 5 constructor calls here, but only 4 destructor calls? Is the bind function neglecting to destroy one of the internal copies made or am I missing something? I understand that if I use the "var" function, the problem is eliminated, but I'd still like to figure this out. I'm using boost 1.33.1 -Thanks! //================================= #include <iostream> #include <vector> #include <algorithm> #include "boost/lambda/bind.hpp" using namespace std; using namespace boost::lambda; struct woot { woot() { cout << "woot constr\n"; } woot(const woot& o) { cout << "woot copy-constr\n"; } ~woot() { cout << "woot destr\n"; } }; void do_nothing(const woot& w) { } int main() { woot w; vector<char> v; for_each(v.begin(), v.end(), bind(do_nothing, w)); } //================================= Output: ------- woot constr woot copy-constr woot copy-constr woot copy-constr woot destr woot destr woot copy-constr woot destr woot destr ____________________________________________________________________________________ Never miss a thing. Make Yahoo your home page. http://www.yahoo.com/r/hs
participants (1)
-
Zian Smith