title: Refactor extended namespace std
body: <p>I have a large project where namespace std is extended with <code>std::abs</code> for a custom type like in the following example.</p>
  <pre><code>struct A {
      int a;
  };
  
  namespace std {
      template &lt;int i&gt;
      auto abs(A&lt;i&gt; const&amp; x) -&gt; A&lt;i&gt;
      {
          return A&lt;i&gt;(std::abs(x.a));
      }
  }
  </code></pre>
  <p>From my understanding, this is undefined behaviour, as it is not a template specialisation for <code>std::abs</code>, so I would like to refactor this. Is there any way to reasonably do this? The call <code>std::abs(A&lt;i&gt;)</code> is often used.</p>