📄 ptrmem18.c
字号:
// PR c++/33616// { dg-do run }// { dg-options "-O2" }extern "C" void abort ();struct S { int c; S () : c (0) {} virtual void f1 () { c += 1; } virtual void f2 () { c += 16; }};struct T { S s;};typedef void (S::*Q) ();template <Q P>void test1 (T *t){ (t->s.*P)();}template <Q P>void test2 (T *t){ S &s = t->s; (s.*P)();}intmain (){ T t; test1 <&S::f1> (&t); if (t.s.c != 1) abort (); test1 <&S::f2> (&t); if (t.s.c != 17) abort (); test2 <&S::f1> (&t); if (t.s.c != 18) abort (); test2 <&S::f2> (&t); if (t.s.c != 34) abort ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -