std :: array不完整类型错误,数组为std :: tuple

ste*_*164 8 c++ c++11 glm-math

我用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确定std::array基类中受保护的大小,我在派生类中引用它using Base<param>::m_array;.派生类有glm::vec3/dmat4/quat各种类型,并使用OpenGL固定函数glBegin(GL_QUADS);.我正在使用SDL-1.2.15来创建OpenGL上下文.我认为大部分内容都是无关紧要的,但也许不是.我可以粘贴代码,但所有内容都是互连的,所以它只能作为一个整体编译(在源之间分配大约一千行左右).

但是,当我在这个ideone示例中包含相同的行时,在非常相似的情况下,它编译完全正常.我通过命令行编译我的编译器,检查它不仅仅是我的编译器(MinGW g ++版本4.7.2)g++ -Wall -std=c++11

有谁知道为什么我会得到这些错误?在解析std::array赋值(使用array = {{a,b,c}};默认参数)时编译器崩溃之前我遇到了一些问题,但这次编译器错误没有崩溃.

Jes*_*ood 12

根据要求,您忘记包含<tuple>编译器抱怨不完整类型的原因.

  • 在我的情况下,我忘了添加`#include <array>` (10认同)