Eric Friedman <[EMAIL PROTECTED]> wrote: > Joel, > > Joel de Guzman wrote: > [snip] >> Also, is there a reason why we can't allow: >> >> variant<int&, double&> var; > > Nothing fundamental no, just some additional metaprogramming ;) It's > supported now (see variant_reference_test).
Cool! > See below for a note on the semantics of the resultant variant type, though. I know what you mean and I agree. >> IIUC, internally, it's just a matter of storing a boost.reference_wrapper >> if T is a reference. > > Well, IMO reference_wrapper isn't exactly the right solution since it is > Assignable whereas references aren't. So I introduced (in the variant detail > namespace) reference_content. It stores a reference, but allows placement > new to occur in the variant implementation. > > The ultimate result of all this: variant< int& > is not Assignable, while > variant< reference_wrapper<int> > is. I believe this is as it should be, but > please disagree if you don't. Agreed! That is the exact semantics I was hoping for. > Nope, thanks for the idea. I think the tuple, variant and optional are very important infrastructures for the meta-programmer. I believe that the three should have a consistent interface and follow some basic underlying concepts, type requirements, etc. Many thanks! -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost