Boost logo

Boost :

From: Fernando Cacciola (fernando_cacciola_at_[hidden])
Date: 2003-02-24 17:07:46

"David Abrahams" <dave_at_[hidden]> wrote in message
> "Fernando Cacciola \(Home\)" <fernando_cacciola_at_[hidden]> 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
> > 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:


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

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


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

Boost list run by bdawes at, gregod at, cpdaniel at, john at