forall(otype T) struct wrap { T value; }; forall(otype T) void ?{}(wrap(T)* this); forall(otype T) void ?{}(wrap(T)* this, wrap(T)* rhs); forall(otype T) void ^?{}(wrap(T)* this); forall(otype T) void ?=?(wrap(T)* this, wrap(T)* rhs); forall(otype T) wrap(T) test() { wrap(T) tester; return tester; }