cpp/language/two-phase lookup

Two-phase name lookup is the process by which a template is instantiated.


 * First, at the point of the template definition, the template is checked for syntax.
 * Second, at the point of instantiation, the template argument is substituted in for the template parameter, instantiating the template

Some compilers do not fully support the first phase, and instead delay nearly all the work until encountering the point of instantiation.