opCast in class prevents destroy
Mike Parker
aldacron at gmail.com
Tue Mar 1 08:16:13 UTC 2022
On Tuesday, 1 March 2022 at 07:16:11 UTC, bauss wrote:
> Right now if you want to add an additional cast then you have
> to implement ALL the default behaviors and then add your custom
> cast.
It's two template functions like the OP used: one for T to catch
everything, and one specialization.
>
> That doesn't seem correct to me at least.
Depends on your perspective I guess. For the inverse, when you
want to allow only one kind of cast and prevent everything else,
you only have to implement one template right now. If that were
not the case, then you'd have to implement an additional
catch-all template that bombs out with a static assert.
So either way makes sense, IMO. Though I totally understand how
the current behavior can be a surprise when people expect it to
behave like, e.g., C++.
But D is not C++. So is `opCast` intended to expand the list of
target types (like C++), or is it intended to define it? The spec
says, "To define how one type can be cast to another", which
doesn't really answer the question.
More information about the Digitalmars-d-learn
mailing list