
Am Sonntag 18 Mai 2008 14:08:16 schrieb Giuseppe Ottaviano:
On May 18, 2008, at 1:29 PM, Frank Birbacher wrote:
Hi!
Maik Beckmann schrieb:
Am Freitag 16 Mai 2008 21:32:56 schrieb Maik Beckmann:
Hello,
Does boost got something to do this struct node { std::vector<node> children; // node is incomplete }; in a way which conform with the standard which disallows STL containers of incomplete types?
Using boost::shared_ptr or boost pointer containers come to mind ( http://www.boost.org/doc/libs/1_35_0/libs/ptr_container/doc/ptr_container .html ). But I don't know weather pointer containers allow incomplete types. I couldn't find it in the documentation.
According to this example http://www.boost.org/doc/libs/1_35_0/libs/ptr_container/test/tree_test.cpp they do.
Maybe recursive_wrapper could help? http://www.boost.org/doc/libs/1_35_0/doc/html/boost/recursive_wrapper.html
It works, but its allways used in a boost.variant context, according to a quick grep at the boost root dir. Aside both solutions might do the trick I'm curious about what a boost/c++ guru would write into a STL-FAQ as a solution, since this problem isn't new. A possible answer might be: As matter of fact all common STL implementations have a vector/list class which works with incomplete types. Other container most likely won't do the job. Thanks, -- Maik