Boost logo

Boost :

From: Maik Beckmann (beckmann.maik_at_[hidden])
Date: 2008-05-18 09:52:19


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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk