Я играл с clang некоторое время, и я наткнулся на "test/SemaTemplate/dependent-template-recover.cpp" (в дистрибутиве clang), который должен предоставлять подсказки для восстановления после ошибки шаблона.
Все это можно легко разделить на минимальный пример:
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>();
}
};
Сообщение об ошибке, полученное clang:
tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name
t->f0<U>();
^
template
1 error generated.
... Но мне трудно понять, где именно один должен вставить ключевое слово template
, чтобы код был синтаксически правильным?