Struct default constructor - need some kind of solution for C++ interop

Ethan Watson via Digitalmars-d digitalmars-d at puremagic.com
Thu Sep 8 04:13:44 PDT 2016


On Thursday, 8 September 2016 at 10:36:22 UTC, Dicebot wrote:
> As a workaround I sincerely believe explicit 'create' (with 
> forged mangling if needed) is better. It provides exactly the 
> same functionality without tricking the developet into 
> expecting more by confusion of the syntax similarity.

If I was to enforce a programming standard with static opCall(). 
The code for instantiating the Mutex example would look like:

Mutex foo = Mutex();

Later on down the track, behind the scenes when default 
constructors work for C++ types I remove the static opCall() 
implementation and replace it with default constructors. Right 
now, Mutex() without static opCall() just gives me the .init. 
With the static opCall(), I can construct it. With a default 
constructor?

I suppose that'd depend on future decisions that haven't been 
made yet. In C++ Mutex() is meant to invoke the zero initialiser. 
It's effectively the opposite in D when using static opCall(). 
Which one would be the correct way to default construct a class? 
We'll find out I suppose.

Either way, assuming the default constructor will be called 
regardless of if it's foo = Mutex; or foo = Mutex();, using 
static opCall() will cut down on future maintenance work.

We're going to disagree on this one, basically. I'm designing 
this system for people who don't want to have to remember to call 
fancy create functions.


More information about the Digitalmars-d mailing list