title: Why does "using namespace xxx" not take effect on template functions?
body: <pre><code>namespace ns1
  {
      template &lt;class T&gt;
      void f(T)
      {
          cout &lt;&lt; typeid(T).name() &lt;&lt; endl;
      }
  };
  
  using namespace ns1;
  
  namespace ns2
  {
      void f(int)
      {
          cout &lt;&lt; "int" &lt;&lt; endl;
      }
  
      void test()
      {
          f(vector&lt;int&gt;()); // Error! 
          // Why not call ns1::f&lt;vector&lt;int&gt;&gt;(vector&lt;int&gt;()); ???
      }
  };
  </code></pre>