|
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