title: What exactly is "broken" with Microsoft Visual C++'s two-phase template instantiation?
body: <p>Reading questions, comments and answers on SO, I hear all the time that MSVC doesn't implement two-phase template lookup / instantiation correctly.</p>
  
  <p>From what I understand so far, MSVC++ is only doing a basic syntax check on template classes and functions and doesn't check that names used in the template have atleast been declared or something along those lines.</p>
  
  <p>Is this correct? What am I missing?</p>