On 5/17/16 8:24 AM, Thorsten Sommer wrote:
Dear all,

I run into an issue with a simple cast:
https://dpaste.dzfl.pl/8e7f7c545eb1

I have a base class and a class A with inherit from that base class:
A <- BaseClass

If the base class contains an "alias this", any casting attempt fails
because the "alias this" type gets considered. Thus, I defined the
opCast() to solve this. But now, the program crashes without any error
or exception...

It's a stack overflow.

obj1.to!OtherObject is going to basically lower to cast(OtherObject)obj1. Which then invokes your opCast. Which then invokes to, ...

Why does the casting operation consider the "alias this" at all? I mean:
The "alias this" type is int. If I try to cast with to!A, obviously int
does not match A!?

It shouldn't. This is a bug in the language. alias this should only be considered if the expression is invalid for the actual type.

Is there any practical solution? Or should I stop using "alias this" for
my classes? I like the "alias this" concept. But it caused some issue
for me...

I think you need to avoid it for now. Please file an issue.

-Steve

Reply via email to