title: Template specialization within namespace
body: <p>I was messing around with some code when this weird behavior occurred :</p>
  
  <p>In the first test, base templated function, user and templated specialization lie within the same namespace and it behaves as I expect :</p>
  
  <pre><code>    namespace Test1
      {
          template &lt;typename V, typename T&gt;
          int doFoo(V&amp; a_visitor, T&amp; a_value)
          {
              return 0;
          }
  
          struct Foo
          {
              template &lt;typename T&gt;
              int process(T const&amp; a_value)
              {
                  return doFoo(*this, a_value);
              }
          };
  
          template &lt;typename T&gt;
          int doFoo(Foo&amp; a_vis, T const&amp; a_ptr)
          {
              return 1;
          }
      }
  
      int main()
      {
          int const k{ 42 };
  
          return Test1::Foo{}.process(k); // returns 1
      }
  
  </code></pre>
  
  <p>but when I move base templated function and its specialization in another namespace, the base one is selected :</p>
  
  <pre><code>namespace Test2
  {
      namespace b
      {
          template &lt;typename V, typename T&gt;
          int doBar(V&amp; a_visitor, T&amp; a_value)
          {
              return 0;
          }
      }
  
      struct Bar
      {
          template &lt;typename T&gt;
          int process(T const&amp; a_value)
          {
              return b::doBar(*this, a_value);
          }
      };
  
      namespace b
      {
          template &lt;typename T&gt;
          int doBar(Bar&amp; a_vis, T const&amp; a_ptr)
          {
              return 1;
          }
      }
  }
  
  int main()
  {
      int const k{ 17 };
  
      return Test2::Bar{}.process(k); // returns 0
  }
  </code></pre>
  
  <p><strong>EDIT</strong> I can do even weirder : in example 1 if I replace call to <code>doFoo</code> with <code>Test1::doFoo</code> I get the wrong behavior again !</p>
  
  <p>Could anyone explain me what is going on here ? How can I do if I really need struct Bar not to be within namespace b ?</p>