title: Why is my log in the std namespace?
body: <p>In the code below, I define a trivial <code>log</code> function. In <code>main</code> I try <em>not</em> to call it; I call <code>std::log</code>. Nevertheless, my own <code>log</code> is called; and I see "log!" on screen. Does anyone know why? I use G++ 4.7 and clang++ 3.2.</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;cmath&gt;
  
  double log(const double x) { std::cout &lt;&lt; "log!\n"; return x; }
  
  int main(int argc, char *argv[])
  {
    std::log(3.14);
    return 0;
  }
  </code></pre>