首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >内部编译器错误: g++4.3.5出现分段错误

内部编译器错误: g++4.3.5出现分段错误
EN

Stack Overflow用户
提问于 2012-03-22 16:34:54
回答 2查看 5.8K关注 0票数 16

以下是代码

   //fail_.cpp
   template< unsigned char X, class L>
   class A {
      public:
      typedef void (A::*fptr)();
      class B {   
           public: B(typename A< X, L> ::fptr );
      };
   };
   template < unsigned char X, typename L >
   A<X,L>::B::B ( fptr ) { }

g++ -c fail_.cpp给出

fail_.cpp:11:内部编译器错误:分段错误

请提交完整的错误报告,如果合适,请提供预处理的来源。

有关说明,请参阅< file:///usr/share/doc/gcc-4.3/README.Bugs >。

在我看来,g++4.3.5是个bug,g++4.4和更高版本不会给出任何这样的段错误。

你们觉得怎么样?代码本身有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2012-04-01 12:50:36

我在gcc 4.2中看到了类似的失败。正如其他人所说的那样,内部错误意味着编译器内部出现了严重的错误,这并不意味着错误的代码就是。

它在g++ 4.6和Clang3.0中运行良好。

票数 1
EN

Stack Overflow用户

发布于 2012-03-29 03:50:59

typename应该用来代替template部分中的class。

在内部类B中,传递函数指针不需要关键字typename,因为此时编译器已经知道A< X,L>。

也许在类型前面提供typename会导致编译器格式错误(可能是未定义的行为?)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9818751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档