What exactly is “broken” with Microsoft Visual C++'s two-phase template instantiation?
问题 Reading questions, comments and answers on SO, I hear all the time that MSVC doesn\'t implement two-phase template lookup / instantiation correctly. 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. Is this correct? What am I missing? 回答1: I'll just copy an example from my "notebook" int foo(void*); template<typename T> struct S