C++11 で奇妙な動作が発生していstd::array
ます。std::array<std::tuple<int, float>, 6> myTuples;
メンバー変数としてコンパイルしようとすると、次のエラーが発生します。
mingw32\4.7.2\include\c++\array:-1: In instantiation of 'struct std::array<std::tuple<int, float>, 6u>':
mingw32\4.7.2\include\c++\array:77: error: 'std::array<_Tp, _Nm>::_M_instance' has incomplete type
これが何かを変更するかどうかはわかりませんが、それが含まれているクラスは、別のテンプレート クラスから派生したテンプレート クラスです。テンプレート パラメーターは、派生クラスで参照する、基本クラスでunsigned int
保護されているのサイズを決定するものです。派生クラスにはさまざまな型があり、OpenGL 固定関数のものを使用します。OpenGL コンテキストを作成するために SDL-1.2.15 を使用しています。そのほとんどは無関係だったと思いますが、そうではないかもしれません。コードを貼り付けることはできますが、すべてが相互接続されているため、全体としてしかコンパイルできません (ソース間で分散されるのは約 1000 行です)。std::array
using Base<param>::m_array;
glm::vec3/dmat4/quat
glBegin(GL_QUADS);
ただし、このイデオンの例に同じ行を含めると、非常によく似た状況で、完全に正常にコンパイルされます。コマンドラインを使用してコンパイラで同じものをコンパイルすることにより、それが単なるコンパイラ(MinGW g ++バージョン4.7.2)ではないことを確認しましたg++ -Wall -std=c++11
これらのエラーが発生する理由を知っている人はいますか? 以前は、std::array
割り当ての解析中にコンパイラがクラッシュするという問題がありましたが (array = {{a,b,c}};
既定のパラメーターを使用)、今回はコンパイル エラーではなくクラッシュしました。