class value_t{public: typedef std::deque<value_t> sequence_t; typedef sequence_t::iterator iterator;};
此代码失败:
1>cpptest.cpp1>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 compiled1> with1> [1> _Ty=value_t1> ]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 .moderated上的 this链接来自DanIEl K的回答: –
总结the C++ standard (both C++03 and
C++0x) says that what you are trying
causes undefined behavIoUr,see
[lib.res.on.functions]/2:“In particular,the effects are undefined in the following cases: [..] — if an incomplete type (3.9) is used as a template argument when instantiating a template component.”
以上是内存溢出为你收集整理的c – 为什么此类声明不适用于Visual Studio全部内容,希望文章能够帮你解决c – 为什么此类声明不适用于Visual Studio所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)