I think, it's more a problem with type inference, which is either exact match or nothing. I once had an idea of customized type inference, which is able to replace the matched type in the process (concepts probably can't do that, do they?), it also allows more constrained type inference than auto, which would result in a more readable code like `InputRange!int r = get();`. But as it's likely a complex feature and language is stabilized, I didn't bother to write a DIP.

@inference
template PseudoString(T)
{
  static if(__traits(compiles, string s=T.init))
    alias PseudoString=string;
  else
    alias PseudoString=NoMatch;
}

//signature becomes (string path) - type was inferred
bool isDir()(PseudoString path)
{
}

Reply via email to