Estou brincando com o clang há algum tempo e me deparei com "test / SemaTemplate / dependente-template-recover.cpp" (na distribuição do clang), que supostamente fornece dicas para se recuperar de um erro de modelo.
A coisa toda pode ser facilmente reduzida a um exemplo mínimo:
template<typename T, typename U, int N> struct X {
void f(T* t)
{
// expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}}
t->f0<U>();
}
};
A mensagem de erro gerada pelo clang:
tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name
t->f0<U>();
^
template
1 error generated.
... Mas tenho dificuldade em entender onde exatamente se deve inserir a template
palavra-chave para que o código seja sintaticamente correto?