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

Reply via email to