"David Abrahams" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> "Fernando Cacciola \(Home\)" <[EMAIL PROTECTED]> writes:
>
> > optional<Window> opt( in_place<Window>(point(0,0),point(10,10)));
> >
> > here, in_place() is used to forward T's ctor argument to optional<> so
that
> > T is effectively constructed in-place right within the aligned storage.
> >
> > Is this what you want?
>
> I have to say that I like the idea of using placement-new with an
> optional<> argument better, since it doesn't get you involved with
> the const ref/non-const ref/rvalue forwarding problem.
>
I thougth about placement new as a way to achieve
in-place optional construction, precisely because of the forwarding
problem, but I couldn't get it to really work.
What would it be like, exactly?

I considered:

(a)

 optional<int> opt ( new ( optional_tag ) int(1) ) ;

this won't work because 'opt.m_storge' doesn't exist yet inside placement
new.

(b)

optional<int> opt ;
new (opt) int(2);

this would be close, but what should I do with the 'int*'
which is the result of the new?

int* p = new (opt) int(2) ?

But this is just:  int v=2; int* p=&v;

--
Fernando Cacciola




_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to