Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/other/ptrmem1.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do run } // Copyright (C) 2001 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 31 Dec 2001 <nathan@codesourcery.com> // PR 4379. We created pointers to member references and pointers to // member fields when we shouldn't have. int gs; int gm; struct D { D () :m (gm) {} int &m; static int &s; int Foo (); }; int &D::s = gs; template<class T> int f1(T x) { return x != &gm; } template<class T> int f2(T x) { return x != &gs; } int D::Foo () { int r; if (f1( &(D::m))) return 3; if (f2( &D::s)) return 1; if (f2( &(D::s))) return 2; return 0; } int Foo () { if (f2( &D::s)) return 4; if (f2( &(D::s))) return 5; return 0; } int main () { D d; int r = d.Foo (); if (r) return r; r = Foo (); if (r) return r; return 0; }