我玩弄 clang 有一段时间了,偶然发现了“ test/SemaTemplate/depant-template-Recovery. 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
关键字来保证代码的语法正确?