什么是消除歧义的关键字模板?

时间:2018-01-05 22:57:19

标签: c++

我正在阅读name lookup,并遇到以下句子:

  

如果名称出现在范围解析的右侧   operator ::或者可能在::之后消除歧义   关键字模板

我确实得到了上面的第一部分,但是“之后跟着 消除歧义的关键字模板 - whaaatt?我迷失了这个。

那么什么是“消除歧义的关键字以及什么是”关键字模板“(作者写的就好像它们是一回事,至少对我而言) ?

2 个答案:

答案 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;
}

More details

答案 1 :(得分:0)

指的是:

typename A::template b<foo>::type