我正在阅读name lookup,并遇到以下句子:
如果名称出现在范围解析的右侧 operator ::或者可能在::之后消除歧义 关键字模板
我确实得到了上面的第一部分,但是“之后跟着 消除歧义的关键字模板 - whaaatt?我迷失了这个。
那么什么是“消除歧义的关键字以及什么是”关键字模板“(作者写的就好像它们是一回事,至少对我而言) ?
答案 0 :(得分:1)
这是一个例子
template<typename T>
struct S {
template<typename U> static void foo(){}
};
template<typename T>
void bar()
{
S<T>::foo<T>(); // error: < parsed as less than operator
S<T>::template foo<T>(); // OK
}
int main() {
bar<int>();
return 0;
}
答案 1 :(得分:0)
指的是:
typename A::template b<foo>::type