title: Can reserved function names be overloaded?
body: <p>This question is a follow-up question of <a href="https://stackoverflow.com/q/50898508/5376789">this one</a>.</p>
  
  <p>Consider the following program:</p>
  
  <pre><code>#include &lt;cmath&gt;
  
  // meaningless, only for language-lawyer purpose
  void abs(void*) {}
  
  int main(){
      abs(nullptr);
  }
  </code></pre>
  
  <p>Does this program result in undefined behavior?</p>
  
  <hr>
  
  <p>The related part in the standard is <a href="http://www.eel.is/c++draft/extern.names#4" rel="noreferrer">[extern.names]/4</a>:</p>
  
  <blockquote>
    <p>Each function signature from the C standard library declared with external linkage is reserved to the implementation for use as a function signature with both extern "C" and extern "C++" linkage, <strong>or as a name of namespace scope in the global namespace</strong>.</p>
  </blockquote>
  
  <p>I'm not sure whether overloading is permitted.</p>