C'tors from templates
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sat Oct 31 15:29:45 PDT 2009
dsimcha wrote:
> == Quote from dsimcha (dsimcha at yahoo.com)'s article
>> == Quote from grauzone (none at example.net)'s article
>>> dsimcha wrote:
>>>> Is there a way to run a class's c'tor on a block of memory from a template
>>>> function? For example:
>>>>
>>>> C newClass(C, CtorArgs...)(CtorArgs args) {
>>>> // Allocate, initialize.
>>>> // Want to call the c'tor that takes type CtorArgs.
>>>> }
>>> Deeply hidden on the Digitalmars homepage, it hints _ctor() and shows
>>> how to correctly construct an object (if you're using dmd):
>>> http://www.digitalmars.com/techtips/class_objects.html
>> Yeah, I had thought of this, but apparently it doesn't work anymore. This is
>> called excessive encapsulation--making things so opaque that, when someone really
>> knows what they're doing and has a good reason to mess around with the internals,
>> they still can't. I'll file an enhancement requesting that this be put back.
>
> Never mind, I realized I was doing two things wrong:
>
> 1. It changed from _ctor to __ctor.
> 2. The class needs to define a c'tor If it doesn't, then there's no default
> __ctor() that takes no args. However, this is easy to check for in a static if
> statement.
Walter and I talked a few times about the necessity of providing useful
functions a la C++'s placement new in Phobos. std.algorithm offers swap
and move, but we need some more. Please advise.
Andrei
More information about the Digitalmars-d
mailing list