Boost logo

Boost Users :

Subject: Re: [Boost-users] variant: bounded types derive from same base class
From: Igor R (boost.lists_at_[hidden])
Date: 2009-08-03 09:50:25


> My restriction is that f takes a ABC const-ref as an input.
> Can I construct the variant from the    const ABC& abc
> Maybe like
>    variant<D1, D2, ... Dn> v(abc);
>
> without deep copying. The Di objects are big.
>
> Then I would apply the visitation.
>
> Maybe storing variant<D1*, D2*, Dn*>...

Yes, you can store ptrs in the variant.

> So f would look like
>
> void f( const ABC& abc )
> {
>   const VariantTypeDefProvidedByLib v(&abc);
>
>    v.apply_visitor( YourVisitor );
> }

You cannot construct the variant in f(), because you already lost the
compile-time type of the object - it's ABC now.
If you'd like to work with ABC's and virtual functions, then why do
you need variant? Variant is about preserving the compile-time type.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net