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