我对 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}};
默认参数),但这次是编译器错误不会崩溃。