Format
cc
cc at nevernet.com
Sat May 22 04:58:04 UTC 2021
On Saturday, 22 May 2021 at 03:14:35 UTC, cc wrote:
> Oops, disregard this. I had an error in my imports.😓
> It does in fact work in @safe.
I should add as an aside then that there is an issue of errors
from the body of a toString template not being displayed, and
instead the template being silently skipped, e.g.:
```d
@safe void toString(W)(ref W writer) if (isOutputRange!(W, char))
{
writer.formattedWrite("FOO:%s", x);
syntactically correct; // Program will compile without error,
but this function will now never be called
}
```
I ran into a similar challenge with opDispatch some time ago:
https://forum.dlang.org/post/axgwhzzawncbpcvqqrur@forum.dlang.org
In this case I assume it's some consequence of NOT wanting to
emit a warning or error for every single class or struct that
doesn't have a templated toString when the various output writers
go looking for one.
Something like this can help reveal errors, not sure if there's
an easier way:
```d
unittest {
struct DebugWriter {
void put(C)(C c) {}
}
DebugWriter wr;
Foo foo;
foo.toString(wr);
}
```
`Error: undefined identifier 'syntactically'`
`Error: template instance
'amemfailuretest.Foo.toString!(DebugWriter)' error instantiating`
More information about the Digitalmars-d-learn
mailing list