xxxxxxxxxx
struct Typedef(TBase)
{
TBase payload;
alias payload this;
}
alias Xobj = Typedef!(void*);
void foo (Xobj obj) {}
void main()
{
void* bad;
foo(bad); /* Error: function foo(Typedef!(void*) obj) is not callable using argument types (void*)
cannot pass argument bad of type void* to parameter Typedef!(void*) obj */
}