それに対するルールはないようで、エラーが発生します
std::vector< std::array<int,8> > output;
output.resize (8);
はC2036 'std::array<int,0x08> *': unknown size
これは意味がありません。内部のコード<vector>
は内部ポインターを進めておりend
、これは他の場所でも使用されます (拡張の計算されたサイズと同様)。a のサイズstruct{int x[8];}
は確かに「既知」です。
何が起きてる?
うーん、それは単純なタイプミスなどではなく、他の人が試してみると問題なく動作するように見えるため (そして、他の誰かが書いたサンプルは私にとってはうまくいきました!) 問題のあるステートメント以外が何も残らないようになるまで、ソースファイルを切り詰めました。失敗します。これがファイル全体です。プリコンパイル済みヘッダーはオフになっています。
//#include <SDKDDKVer.h>
#include <vector>
int main()
{
std::vector< std::array<int,8> > output;
output.resize (16);
}
x64、リリースビルドを使用してビルドしています。
理解した:
#include の欠落でvector
はなく、array
! 他のヘッダーで前方宣言されているようですが、不完全です。