On 12 May 2012 12:43, Jonathan M Davis <jmdavisp...@gmx.com> wrote: > On Saturday, May 12, 2012 12:37:12 Manu wrote: > > On 12 May 2012 12:26, Timon Gehr <timon.g...@gmx.ch> wrote: > > > On 05/12/2012 10:13 AM, Manu wrote: > > >> On 11 May 2012 21:28, Mehrdad <wfunct...@hotmail.com > > >> > > >> <mailto:wfunct...@hotmail.com>**> wrote: > > >> Yes, I agree, but consider that D users should NOT have to work > with > > >> pointers to do something so basic > > >> > > >> I'd like to think this were true, but the fact that 'ref' barely works > > >> makes this almost immediately false when trying to write any > non-trivial > > >> program. > > > > > > It depends on the coding style. > > > > If the distinction is whether one likes to have data structures in their > > code or not, I reckon there's a reasonably large user base in the > former? :) > > Once you use 'struct' you can't avoid pointers, given that ref just > doesn't > > work in many (perhaps most) situations. > > Since structs are generally value types, it's extremely common to just pass > them by value - so no refs or pointers are involved.
... no. structs are for storing structured data. They may be rather large, they may aggregate smaller structs. In my entire career as a programmer, I can count the number of times I've wanted to pass a struct by value on perhaps one hand. I _rarely_ need pointers > for structs, and I don't need ref for them all that often either. If you need pointers at all, and you want to stick with D's modern pointers-shouldn't-appear-in-day-to-day-code idiom, then you need ref. > And aside > from the need to duplicate functions which take const ref so that they work > with rvalues, I don't know what about ref you could think doesn't work. > That's not a solution, it's not even a work around, it's a totally different operation. I may not want to, or can't, pass my data by value.