3 ms·
With two-phase lookup errors in code that does not depend on template arguments are caught earlier (when the template is defined) than with one-phase lookup (wh
by Kristine1975 11y ago
With two-phase lookup errors in code that does not depend on template arguments are caught earlier (when the template is defined) than with one-phase lookup (when the template is instanciated). Which is why template code written for Visual Studio might not compile with a standard conforming compiler.
>instantiating a template is literally a textual substitution
I'm being pedantic here, but that's not quite the case. Example:
template <typename T>
void foo()
{
T t;
...
}
foo<int[2]>();
With simple textual substitution this would result in a syntax error, as
int[2] t;
isn't valid C++ code.