简体   繁体   中英

std::array incomplete type error with an array of std::tuple

I am getting some strange behaviour with a C++11 std::array . When I try to compile with std::array<std::tuple<int, float>, 6> myTuples; as a member variable, I get these errors:

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

I'm not sure if any of this changes anything but the class it is in is a template class derived from another template class. The template parameter is an unsigned int an determines the size of a protected std::array in the base class, which I reference in the derived class using Base<param>::m_array; . The derived class has various glm::vec3/dmat4/quat types, and uses OpenGL fixed function glBegin(GL_QUADS); stuff. I'm using SDL-1.2.15 to create an OpenGL context. I think most of that was irrelevant, but maybe not. I could paste code, but everything is interconnected, so it can only be compiled as a whole (which distributed between sources is around a thousand or so lines).

However, when I include this same line in this ideone example , in very similar circumstances, it compiles perfectly fine. I checked that it wasn't just my compiler (MinGW g++ version 4.7.2) by compiling the same on my compiler with command line g++ -Wall -std=c++11

Does anyone know why I might get these errors? I had some problems before with the compiler crashing while parsing std::array assignment (using array = {{a,b,c}}; for a default parameter), but this time its a compiler error not crash.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM