alias seq(T...)=T;
alias a=seq!int;
alias b=seq!float;
alias c=a~b;//seq!(int,float)
alias a=seq!();
a~=int;
a~=float;//seq!(int,float)
Concatenation of vartatic templates will automagically grab their headers and combine them together
If the templates are different then the first one will be used
alias a=seq!int;
alias b=AliasSeq!float;
static assert(is(a~b==seq!(int,float));
static assert(is(b~a==AliasSeq!(float,int));
this will allow pulling out template arguments from a reference
alias badseq(T...)=void;
alias a=badseq!(int,float);
alias b=seq!()~a;//seq!(int,float)
it should work with templated structs/functions
struct sumtype(T...){...}
alias a=seq!()~sumtype!(int,float);//seq!(int,float)