2009-08-15 6 views
9

私はそうのようなD3DXMATRIXA16のためのベクトルを作成しようとしています:vector<D3DXMATRIXA16> matrices;をし、エラーを取得しています:エラーC2719: '_Val':__declspec(整列('16 '))の仮パラメータは整列されませんか?

 d:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector(717) : 

error C2719: '_Val': formal parameter with __declspec(align('16')) won't be aligned

e:\projects\emuntitled\em\emscratch\emshadow.h(60) : 

:see reference to class template instantiation 'std::vector<_Ty>' being compiled with [ _Ty=D3DXMATRIXA16 ]

はなぜその正確でしょうか?

ありがとうございました!

+0

使用する場所にコードを投稿できますか? – Tchami

答えて

14

stl :: vectorがD3DXMATRIXA16のような整列したデータを正しく含むことができないのはknown issueです。 1つのポスターpinned the root cause(または少なくとも1つは?):vector :: resizeの宣言は、整列されたデータをconst参照ではなく値で渡します。 いくつかの回避策がそのスレッドで提案されました。最も安全なものはで、stl :: vectorは完全にです。 stlヘッダーを自分で修正して再コンパイルすることもできます - これは実際には簡単なことかもしれませんが、自分ではしませんでした。

EDIT:リンクが壊れています(感謝@David Menard)。ここはan alternative, more elaborate answerです。

問題はVS2012RCで修正されています - ここにはa corresponding connect issueへのリンクがあります。それは実際には2008年に修正されたC++標準自体の問題であったことが分かります。

+0

リンクが壊れている –

2

std :: vectorクラスでは、templateパラメータにalign(1)を指定する必要があります。何らかの高速インデックス作成の可能性があります。

関連する問題