On Wednesday, 7 September 2016 at 12:28:41 UTC, Ethan Watson
wrote:
On Wednesday, 7 September 2016 at 12:14:46 UTC, rikki
cattermole wrote:
http://dlang.org/phobos/std_typecons.html#.scoped
This is the kind of hackaround I'd need to do if it were a
class... And it would require more hacking around than the
standard library supports. And it's a spiraling-out-of-control
hack, which would effectively mean every C++ matching class
will need to define a class and then an alias with the scoped
type, and then that means the pattern matching I've been
creating for function linkups won't work any more...
static opCall() and a static alloc function for allocating on
the heap are still looking like the simplest options here.
They aren't. It won't also be used if you declare new instance on
stack via `S s`. Staic opCall is 100% identical to any other
static factory method in its semantics (i.e. static S create()).
What I am trying to say is thta prohibiting struct default
constructors is an intentional language design decision in D,
with a lot of consequences. There is literally no chance it can
be tricked.
Instead, it would be much more constructive (pun unintended) to
focus on language changes to extern(c++) class bindings to make
them suitable for the task - those won't affect anyone but C++
interop users.