In that case, arguably, the function should just be called `parse`, and have a signature of:
```D
Target parse(Target, Source)(ref Source s)
if (is(Target == UUID) && isSomeCharRange!Source)
{}
```

The entire point of template restrictions (initially), was to allow such useage.