pmf5.c

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 40 行

C
40
字号
// { dg-do run  }// Bug: g++ expanded b->member() multiple times, causing the optimizer to// decide that things weren't related and optimize 'die' into an infinite// loop.struct A {  virtual ~A() { }  void f (bool) { }};typedef void (A::*pmf_void)();typedef void (A::*pmf_bool)(bool);struct B {  ~B() {}  pmf_void member() const { return mbr; }  pmf_void mbr;};A *a;B *b;void die (bool param) {  pmf_bool pmf = (pmf_bool)(b->member());  (a->*pmf)(param);}int main (){  A a2;  B b2;  b2.mbr = reinterpret_cast<pmf_void>(&A::f);  a = &a2;  b = &b2;  die (true);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?