3 Mar
2005
3 Mar
'05
2:23 p.m.
"Peter Dimov"
Johan Nilsson wrote:
[...]
std::vector
foos(10); std::for_each(foos.begin(), foos.end(), _1 = shared_ptr<Foo>(new Foo)); Lambda way (according to the docs, I haven't tried it):
std::for_each( foos.begin(), foos.end(), _1 = bind( constructor< shared_ptr<Foo> >(), new_ptr<Foo>() ) );
I searched the docs but obviously missed/skipped that part ... embarrassing.
(probably leaks when new throws)
Old school way:
shared_ptr<Foo> createFoo() { return shared_ptr<Foo>( new Foo ); }
std::generate( foos.begin(), foos.end(), createFoo );
Cleaner, nicer (but one of my intentions was to finally get around to learn how to use BLL). Thanks // Johan