Constructeurs __vectorcall et C ++

L’article de “DirectXMath Library Internals” sur MSDN indique que:

En raison des limitations avec __vectorcall, nous vous recommandons de ne pas utiliser GXMVECTOR ou HXMVECTOR pour les constructeurs C ++.

et

En raison des limitations avec __vectorcall, nous vous recommandons de ne pas utiliser XM_CALLCONV pour les constructeurs C ++.

, où (lors de l’utilisation de __vectorcall ) GXMVECTOR et HXMVECTOR sont const __m128 ou const __m128& et XM_CALLCONV est __vectorcall .

Je n’ai vu aucun autre endroit avec de telles recommandations.

Si les limitations ci-dessus existent réellement, pourquoi existent-elles? Que se passerait-il si j’écrivais du code comme ceci:

 class foo { public: __vectorcall foo(const __m128 a, const __m128 b) { // do something } };