"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