2009-08-15 7 views
9

Ben şöyle D3DXMATRIXA16 için bir vektör oluşturmak çalışıyorum: vector<D3DXMATRIXA16> matrices; ve hatayı alıyorum:hatası C2719: '_Val': __declspec ile biçimsel parametre (align ('16 ')) hizalanmayacak mı?

 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 ]

Neden tam olarak nedir?

Yardımlarınız için teşekkürler!

Bu std :: vektör sınıfı benzeyen
+0

Kullandığınız kodu postalayabilir misiniz? – Tchami

cevap

14

Bu stl :: vektör, D3DXMATRIXA16 gibi hizalanmış verileri düzgün olarak içeremeyen bir known issue 'dir. Bir poster pinned the root cause (veya en azından bunlardan biri?): Vector :: resize bildirimi, hizalanmış verileri const referansı olarak değil, değer olarak geçirir. Çeşitli geçici çözümler bu iş parçacığı, en güvenli tamamen :: vektör stl bırakarak olmak önerilmiştir. Ayrıca, stl başlıklarını kendiniz düzeltmek ve yeniden derlemek isteyebilirsiniz - bu aslında göründüğünden daha kolay olabilir, ancak kendim yapmadım.

DÜZENLEME: bağlantılar artık kırılmıştır (teşekkürler @David Menard), işte an alternative, more elaborate answer.

konu VS2012RC giderilmiştir - burada a corresponding connect issue için bir bağlantı var. Gerçekte, 2008'de sabitlenen C++ standardında bir sorun olduğu ortaya çıktı.

+0

bağlantılar bozuldu –

2

hizalamak için şablon parametresini gerektirir (1); Bir tür hızlı indeksleme olasılığı yüksektir.

İlgili konular