Two-phase name lookup
From cppreference.com
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.