Hello everybody,

Let's assume there's an implementation of a templated struct like this:

```
import std.format, std.range.primitives;

struct Point(T)
{
    T x, y;

void toString(W)(ref W writer, scope const ref FormatSpec!char f) const
    if (isOutputRange!(W, char))
    {
        put(writer, "(");
        formatValue(writer, x, f);
        put(writer, ", ");
        formatValue(writer, y, f);
        put(writer, ")");
    }
}

void main(){

        import std.format : format;
        assert( format("%s", Point!int(1,2)) == "(1, 2)");

        import std.experimental.logger;
        sharedLog.infof("%s", Point!int(1,2));
/+
Error: none of the overloads of template `std.logger.core.Logger.memLogFunctions!LogLevel.info.logImplf` are callable using argument types `!()(string, Point!int) shared`
/Users/pinver/dlang/dmd-2.102.0/osx/bin/../../src/phobos/std/logger/core.d(828,14):
        Candidates are: `logImplf(int line = __LINE__, string file = __FILE__, 
string funcName = __FUNCTION__, string prettyFuncName = __PRETTY_FUNCTION__, 
string moduleName = __MODULE__, A...)(lazy bool condition, lazy string msg, 
lazy A args)`
/Users/pinver/dlang/dmd-2.102.0/osx/bin/../../src/phobos/std/logger/core.d(876,14):
                        `logImplf(int line = __LINE__, string file = __FILE__, 
string funcName = __FUNCTION__, string prettyFuncName = __PRETTY_FUNCTION__, 
string moduleName = __MODULE__, A...)(lazy string msg, lazy A args)`
+/

}
```

What is the best way to handle also shared writers?

Thank you all,
Paolo




Reply via email to