In qualche modo mi piacciono questi programmi "più corti" che mostrano un problema (fondamentale?). Durante il test del codice modello in VS2008 questo errore si presentò (è stato confermato anche per VS2010 e VS2012, vedi sotto):Errore del compilatore VS C2752 ("più di una corrispondenza di specializzazione parziale") in STL
c: \ program files (x86) \ Microsoft Visual Studio 9.0 \ VC \ include \ xmemory (225): l'errore C2752: 'std :: _ Ptr_cat_helper < _T1, _T2>': più di una specializzazione parziale corrisponde all'elenco dei modelli argomenti
with [ _T1=const float (**), _T2=const float (**) ]
ho potuto ridursi il problema per le seguenti tre righe :
#include <vector>
typedef float TPoint[3];
std::vector<TPoint const*> points; // error C2752
Nota che il seguente è tutto 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;
Ho cercato di risolvere xutility fornendo spezializations template aggiuntivi per struct _Ptr_cat_helper - senza fortuna. Qualche idea cosa va storto? O come lavorare senza perdere lo const
?
Non hai ancora un VS installare di fronte a me, ma funziona con GCC. Potresti aver trovato un bug nella loro lib standard. –
L'aggiornamento a VS non è attualmente possibile: dipendiamo da dll (utilizzando componenti MFC) di altri gruppi ... Ma sarebbe bello sentire se le tre righe sopra compilarono su VS2010 – coproc
Scusa, non viene compilato, motivo per cui I rimosso quel commento. :/Non è del tutto chiaro quale sia l'elemento del vettore, però. Un puntatore a un array di tre elementi di const float? – Xeo