不知何故,我喜欢这些显示(基本?)问题的“最短”程序。在 VS2008 中测试一些模板代码时出现此错误(VS2010 和 VS2012 也已确认,见下文):
c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory(225) : error C2752: 'std::_Ptr_cat_helper<_T1,_T2>' : 多个部分特化匹配模板参数列表
with [ _T1=const float (**), _T2=const float (**) ]
我可以将问题归结为以下三行:
#include <vector>
typedef float TPoint[3];
std::vector<TPoint const*> points; // error C2752
注意以下都可以
#include <vector>
#include <list>
typedef float TPoint[3];
// these similar usages of TPoint are all ok:
std::vector<TPoint*> points; // no error
TPoint const* points1[2];
std::list<TPoint const*> points2;
我试图通过为 struct _Ptr_cat_helper 提供额外的模板特殊化来修复 xutility - 没有运气。任何想法出了什么问题?或者如何在不丢失的情况下解决const
?