On 2011-05-20 11:52, so wrote: > On Fri, 20 May 2011 21:44:19 +0300, Jonathan M Davis <[email protected]> > > wrote: > > That wouldn't work with > > > > A a(args, to, constructor); > > > > Now, I personally never use that syntax and always use > > > > auto a = A(args, to, constructor); > > > > but you can't do the first form without a constructor, and even in the > > second > > form, you're making it clear that you're spefically constructing a value > > of > > that type as opposed to using a some random function which happens to > > produce > > that type. But ultimately, constructors are just special functions > > anyway. > > > > - Jonathan M Davis > > Wait a minute, i thought "A a(args, to, constructor)" wasn't allowed in D. > And "test t(5);" gives an error.
Hmm. I was sure that it was, but I just tried it, and it won't compile. I'm confused now. I never use that style though - even with no arguments to the constructor - so that the type's static opCall will be used instead of its init value if it has one. e.g. auto a = A(); instead of A a; So, it's not something that I would ever have tried anyway. But I guess that it was either changed ot some point, or I misremembered about it being legal. - Jonathan M Davis
