下面的代码给出了编译错误。
$ cl.exe VC14-bug.cpp
Microsoft(R)C / C ++优化编译器版本19.00.23026 for x64
版权所有(C)Microsoft Corporation。保留所有权利。
VCl 4-bug.cpp
VC14-bug.cpp(41):错误C2893:无法专门化功能模板'void failed(T1,Poly> *)'
VC14-bug.cpp(41):注意:使用以下模板参数:
VC14-bug.cpp(41):注意:'T1 = int'
VC14-bug.cpp(41):注意:'T2 =内核'
函数f()会产生问题。任何人都可以复制它吗?
if(pt.Count > 0) ob.PostCode = pt[0];
if(pt.Count > 1) ob.Town = pt[1];
答案 0 :(得分:1)
这肯定是VC14模板参数扣除代码中的一个错误。
一种可能的解决方法是在Poly
中允许fails
的所有类型的容器:
template<class T1, class T2, class Cont>
void
fails(T1,
Poly<T2, Cont> *)
{}
我已使用setDescendantFocusability进行了验证。遗憾的是,无法链接到测试用例online Visual C++ compiler。