Overloading elementary function

[Thanks Michael for providing more information and context].

Damian, I remain concerned about your assertion that this will break
longstanding code of yours and would like to understand better what the
code patterns in question are, and the motivations for them.

For example, if the case you sent is an exact example of such a pattern,
I'm imagining the motivation to be something like:

"Math defines some sqrt() overloads that I'd like to use, but I want to
create my own sqrt() overload for complexes because...

  • 'Math' doesn't/didn't support a sqrt() on complex."
  • I don't think the sqrt() on complex on Math is good so want to provide
    my own but not provide the other overloads as well."
  • [something else]."

Can you help me understand:

(a) which of these motivations is the one for the code pattern in your
reproducer so that we can suggest a best practice for it and try to
help better rationalize the current behavior?

(b) whether your reproducer is indicative of the code patterns in your
existing code so that we can try to help you come up with a path
forward for them?

Also, can you let me know what the most recent version of the compiler
your existing code has worked with? I'm specifically trying to figure out
whether something has changed after 1.28 that we're brushing past in
thinking that that was the last time we'd made big resolution changes.