不知何故,我喜歡這些「最短」的程序顯示(基本?)問題。當在VS2008中測試一些模板代碼時,這個錯誤出現了(它也被VS2010和VS2012證實,見下文):STL的VS編譯器錯誤C2752(「多個部分專業化匹配」)
c:\ program files(x86)\ microsoft visual studio 9.0 \ vc \ include \ xmemory(225):錯誤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
注意,以下是一切ok
#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;
我試圖通過結構_Ptr_cat_helper提供額外的模板spezializations修復xutility - 沒有運氣。任何想法出了什麼問題?或者如何解決而不會丟失const
?
還沒有安裝VS在我面前,但它與海灣合作委員會的工作。您可能在標準庫中找到了一個錯誤。 –
升級VS目前是不可能的:我們依賴於來自其他團隊的dll(使用MFC組件)......但是,如果上面的三行代碼在VS2010上編譯將會很好聽 – coproc
對不起,它不能編譯,這就是爲什麼我刪除了該評論。 :儘管這個矢量的元素應該是什麼,但這並不完全清楚。一個指向三個const Float元素的數組的指針? – Xeo