Creating a List Type Using std.variant.algebraic

Meta via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Apr 27 13:01:04 PDT 2014


I'm trying to create a basic List type using Algebraic, but the 
compiler keeps complaining about recursive aliasing.

import std.variant;

struct Cons(T, U: List)
{
	public static opCall(T t, U u)
	{
	}
}

//Error
alias List = Algebraic!(typeof(null), Cons!(int, This));

void main()
{
	List l = Cons(1, Cons(2, Cons(3, null)));
}

I tried changing Cons like so:


struct Cons(T, U)
{
     //...
}

Then I get:
Error: struct f809.Cons cannot deduce function from argument types
!()(int, typeof(null)), candidates are: f809.Cons(T, U)

Error: struct std.variant.This unknown size
Error: struct std.variant.This unknown size
Error: variable f809.Cons!(int, This).Cons.opCall.u no definition 
of struct This

I'm not sure what else I could try. Does anyone have any advice 
on using this?


More information about the Digitalmars-d-learn mailing list