使用typename关键字显式声明依赖类型。
例如,对于以下代码:
template void myfunc(T x) { std::vector::iterator it = x.begin(); }
编译器可能会出现“unqualified lookup of 'begin'”的错误,因为编译器无法确定std::vector::iterator是一个类型还是一个成员变量。
为了解决这个问题,我们可以使用typename关键字来显式声明依赖类型:
template void myfunc(T x) { typename std::vector::iterator it = x.begin(); }
这样,编译器就能正确地识别std::vector::iterator作为一个类型,而不是一个成员变量。
上一篇:标准库类型的赋值运算符的ref限定符
下一篇:标准库仍然需要额外的运行时库吗?(vcruntime140_1.dll)