On Thursday, June 14, 2012 21:50:31 Dmitry Olshansky wrote: > On 14.06.2012 21:43, Jonathan M Davis wrote: > > On Thursday, June 14, 2012 21:27:58 Dmitry Olshansky wrote: > >> On 14.06.2012 20:32, Roman D. Boiko wrote: > >>> On Thursday, 14 June 2012 at 16:24:43 UTC, Jonathan M Davis wrote: > >>>> On Thursday, June 14, 2012 17:32:03 Roman D. Boiko wrote: > >>>>> I don't know how to put a variable of type float to the heap > >>>> > >>>> auto f = new float; > >>>> *f = 2.1; > >>>> > >>>> - Jonathan M Davis > >>> > >>> Except for immutable I would need to cast when passing into a function. > >>> That's dangerous, given that *f might be changed later. But looks like > >>> Timon's suggestion from my other question should work. > >>> > >>> immutable a = [2.1].ptr; > >> > >> That or pack the logic into a pure function, e.g. this should work: > >> > >> immutable ap = newPureFloat(3.1415); > >> > >> float* newPureFloat(float val)pure > >> { > >> float* p = new float; > >> *p = val; > >> return p; > >> } > > > > Yeah, I was just thinking that maybe we should make a generic function for > > this and add it to Phobos. Something like > > > > auto makePtr(T, U)(U value) if(is(U : T)) {} > > auto makePtr(T, Args...)(Args args) {} > > I think make new would be more self-explanatory. Ptr doesn't imply heap. > Other then this, it looks useful. > (I'd love to see an optional allocator parameter... but have to wait I > guess)
Well, we use make with std.container already for essentially the same thing, only it's specifically for containers. - Jonathan M Davis