У меня есть этот очень простой фрагмент кода;
#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?