title: Default template arguments compiler bug
body: <p>Next code:</p>
  
  <pre><code>#include &lt;typeinfo&gt;
  #include &lt;iostream&gt;
  
  struct A
  {
      A() : _m('a'){ std::cout &lt;&lt; "A()" &lt;&lt; std::endl; }
          void f(){ std::cout &lt;&lt; "A::f() " &lt;&lt; _m &lt;&lt; std::endl; }
  
          char _m;
  };
  
  struct B
  {
          B() : _m('b'){ std::cout &lt;&lt; "B()" &lt;&lt; std::endl; }
          void f(){ std::cout &lt;&lt; "B::f() " &lt;&lt; _m &lt;&lt; std::endl; }
  
          char _m;
  };
  
  struct C
  {
          C() : _m('c'){ std::cout &lt;&lt; "C()" &lt;&lt; std::endl; }
          void f(){ std::cout &lt;&lt; "C::f() " &lt;&lt; _m &lt;&lt; std::endl; }
  
          char _m;
  };
  
  template&lt;typename T&gt;
  void f(T t = T());
  
  template&lt;typename T&gt;
  void f(T t)
  {
          std::cout &lt;&lt; typeid(t).name() &lt;&lt; std::endl;
  
          t.f();
  }
  
  int main()
  {
          f&lt;A&gt;();
          f&lt;B&gt;();
          f&lt;C&gt;();
  }
  </code></pre>
  
  <p>Has this output when using VS2008, VS2010 and VS2012:</p>
  
  <pre><code>A()
  struct A
  A::f() a
  A()
  struct B
  B::f() a
  A()
  struct C
  C::f() a
  </code></pre>
  
  <p>Is this a known compiler bug? </p>
  
  <p>Please note that it works as expected in VS2013.</p>