Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/torture/pr68064.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do compile } template <class Config> class A { public: class B; typedef typename Config::template D<A>::type TypeHandle; static A *Tagged() { return B::New(B::kTagged); } static TypeHandle Union(TypeHandle); static TypeHandle Representation(TypeHandle, typename Config::Region *); bool Is(); }; template <class Config> class A<Config>::B { friend A; enum { kTaggedPointer = 1 << 31, kTagged = kTaggedPointer }; static A *New(int p1) { return Config::from_bitset(p1); } }; struct C { typedef int Region; template <class> struct D { typedef A<C> *type; }; static A<C> *from_bitset(unsigned); }; A<C> *C::from_bitset(unsigned p1) { return reinterpret_cast<A<C> *>(p1); } namespace { int *a; void fn1(A<C> *p1) { A<C>::Union(A<C>::Representation(p1, a)); } } void fn2() { A<C> b; A<C> *c = b.Is() ? 0 : A<C>::Tagged(); fn1(c); }