Difficulties with std.variant.Algebraic

Meta jared771 at gmail.com
Thu Jul 11 11:49:25 PDT 2013


On Thursday, 11 July 2013 at 18:31:50 UTC, Jesse Phillips wrote:
> I forgot to mention that most of the casting you were doing 
> doesn't do what you think it would.
> ...
>
> This doesn't make an Option!int castable to a Maybe!int, they 
> are still distinct types:
> ...

struct Test1
{
	int n;
}

struct Test2
{
	string s;
	Test1 t;
	
	alias t this;
}

void main()
{
	auto t1 = Test1();
	auto t2 = cast(Test2)t1; //Error
}

It seems you're right. That's disappointing. TDPL talks about 
alias this in terms of subtyping, but doesn't the above code show 
that this is not true subtyping?


More information about the Digitalmars-d-learn mailing list