C++ 11 std::array
で奇妙な動作が起こりました。私は、メンバ変数としてstd::array<std::tuple<int, float>, 6> myTuples;
でコンパイルしようとすると、私はこれらのエラーを取得:std :: array std :: tupleの配列で不完全な型エラーが発生しました
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
であり、基底クラスの保護されたstd::array
のサイズを決定します。これは派生クラスusing Base<param>::m_array;
で参照しています。派生クラスにはさまざまな種類のglm::vec3/dmat4/quat
があり、OpenGLの固定機能glBegin(GL_QUADS);
を使用します。 SDL-1.2.15を使用してOpenGLコンテキストを作成しています。私はそれのほとんどが無関係だったと思うが、そうでないかもしれない。私はコードを貼り付けることができますが、すべてが相互に接続されているため、全体としてコンパイルすることができます(ソース間には千またはそれほどの線があります)。
しかし、この同じ行をthis ideone exampleに含めると、非常によく似た状況で完全にコンパイルされます。私はコンパイラ(MinGW g ++バージョン4.7.2)だけでなく、コマンドラインでコンパイラで同じものをコンパイルしていることを確認しましたg++ -Wall -std=c++11
なぜ私はこれらのエラーが発生する可能性がありますか?以前は、std::array
の代入(デフォルトのパラメータにはarray = {{a,b,c}};
を使用)を解析中にコンパイラがクラッシュするという問題がありましたが、今回はコンパイラエラーがクラッシュしません。
'#include'を実行しましたか? –
dunc123
「」を忘れた場合でも同様のエラーを再現できます。実際には、g ++ 4.7 '/usr/include/c++/4.7/array:77:43と同じエラーが発生しました:エラー: 'std :: array <_Tp, _Nm> :: _ M_instance'に不完全な型があります –
[SSCCE]( http://sscce.org/)。 – juanchopanza