Fehler C2719: '_Val': formale parameter mit __declspec(align('16')) nicht ausgerichtet werden?
Ich versuche, erstellen Sie einen Vektor für D3DXMATRIXA16
etwa so: vector<D3DXMATRIXA16> matrices;
und bin immer der Fehler:
d:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector(717) :
Fehler C2719: '_Val': formale parameter
mit __declspec(align('16')) nicht
ausgerichtete:\projects\emuntitled\em\emscratch\emshadow.h(60) :
:siehe Verweis auf Klasse Vorlage
die Instanziierung von " std::vector<_Ty>' wird
zusammengestellt
mit
[
_Ty=D3DXMATRIXA16
]
Warum genau?
Vielen Dank für jede Hilfe!!!
- Können Sie nach dem code, wo Sie es verwenden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein bekanntes Problem [link tot], die stl::vector nicht richtig enthalten, ausgerichtet von Daten, wie D3DXMATRIXA16. Ein Plakat angeheftet die Ursache (oder zumindest einer von Ihnen?): die Deklaration von Vektor::resize geht das ausgerichtete Daten durch einen Wert, und nicht als const-Referenz.
Verschiedene workarounds vorgeschlagen, in diesem thread, die sicherste sein fallen stl::vector insgesamt. Vielleicht wollen Sie auch zu beheben, die stl-Header selbst und neu zu kompilieren - das eigentlich einfacher, als es klingt, aber ich habe es nicht selbst getan.
EDIT: links sind jetzt gebrochen (danke @David Menard), hier ist eine alternative, mehr aufwendige Antwort.
Das Problem wird behoben, in VS2012RC - hier ist ein link zu eine entsprechende connect-Ausgabe [link tot]. Stellt sich heraus, es war tatsächlich ein Problem im C++ - standard selbst fest in 2008.
Sieht es aus wie der std::vector-Klasse erfordert, dass die template-parameter align(1); wahrscheinlich für eine Art schnelle Indizierung.