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.