因此,我试图获取一些为gcc编写的代码,以便在Visual Studio 2008上进行编译。

class value_t
{
public:
  typedef std::deque<value_t>         sequence_t;
  typedef sequence_t::iterator        iterator;
};

此代码失败:
1>cpptest.cpp
1>c:\program files\microsoft visual studio 9.0\vc\include\deque(518) : error C2027: use of undefined type 'value_t'
1>        c:\temp\cpptest\cpptest.cpp(10) : see declaration of 'value_t'
1>        c:\temp\cpptest\cpptest.cpp(13) : see reference to class template instantiation 'std::deque<_Ty>' being compiled
1>        with
1>        [
1>            _Ty=value_t
1>        ]
1>c:\program files\microsoft visual studio 9.0\vc\include\deque(518) : error C2027: use of undefined type 'value_t'
1>        c:\temp\cpptest\cpptest.cpp(10) : see declaration of 'value_t'

但是,当我尝试使用std::vector时,它可以正常编译:
class value_t
{
public:
  typedef std::vector<value_t>        sequence_t;
  typedef sequence_t::iterator        iterator;
};

怎么了?我尝试过在所有可以想到的地方添加"typename",但是目前我认为这只是Dinkumware STL中的一个错误。谁能解释正在发生的事情,和/或提供解决方案?谢谢。

最佳答案

它的不确定行为。请参阅c.l.c++上的this链接。

丹尼尔·克(Daniel K)的答案片段:-

09-06 19:04