On Friday, 6 November 2020 at 10:51:20 UTC, Andrey Zherikov wrote:
I can make it work if I add a type to `failure` function but this remove brevity in usage:
-----------------
auto failure(T)(string error)
{
    return Result!T(Result!T.Failure(error));
}
auto f(int i)
{
return i > 0 ? success(i) : failure!int("err text"); // no error
}
-----------------

How can I make the original code compilable without templatizing `failure` function?

You can't. Both return values have to have the same type, which means the failure function has to be able to return more than one type, which means it has to be a template.

Reply via email to