xxxxxxxxxx
import std.traits;
void main()
{
alias V = Vec!Bool;
alias P = Port!(V);
pragma(msg, P.ElementType);
static assert(__traits(hasMember, P, "ElementType"));
static assert(hasMember!(P, "ElementType"));
}
mixin template SignalOps()
{
static if(hasMember!(typeof(this), "ElementType")) { }
}
struct Bool {}
struct Port(SomeSignal)
{
static if(hasMember!(SomeSignal, "ElementType"))
alias ElementType = SomeSignal.ElementType;
mixin SignalOps;
}
struct Vec(SomeSignal)
{
alias ElementType = SomeSignal;
}