static class A { void toString(C, W)(scope ref W w) const { w.put(C('a')); } } static class S { void toString(W)(scope ref W w) const { w.put("s"); } } static class D { void toString(Dg)(scope Dg sink) const { sink("d"); } } static class F { const(char)[] toString()() const return { return "f"; } } static class G { const(char)[] s = "g"; alias s this; } assert(stringBuf() << new A() << new S() << new D() << new F() << new G() << getData == "asdfg");
Prints classes and interfaces