Различное поведение std deque / vector в MSVCC / g ++ / icc

У меня есть этот очень простой фрагмент кода;

#include <deque>
#include <vector>

using namespace std;

class A
{
public:
    A(){};
    ~A(){};
    deque<A> my_array; // vector<A> my_array;
};

int main(void)
{
}

Если я скомпилирую этот код как с g ++, так и с icc / icpc в Linux, он компилируется нормально, даже с -Wall не выдает предупреждений. Если я поменяю двухстороннюю очередь на вектор, ситуация будет такой же.

Я хотел бы создать этот код в Windows, используя MSVCC (cl), но, к сожалению, он выдает ошибку c2027:

error C2027: use of undefined type 'A'

Если, однако, я изменю std :: deque на std :: vector он отлично компилируется с Visual Studio 2010.

У меня вопрос; следует ли ожидать такого поведения по какой-либо причине? Если да, то почему существуют различия между компиляторами или это ошибка либо с g ++ / icc, либо с MSVCC?

5
задан Dan 24 October 2011 в 09:05
поделиться