Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/opt/pr52643.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
// PR c++/52643 // { dg-options "-O" } template<class T> class already_AddRefd {}; template<class T> class ObjRef { public: ObjRef() {} ObjRef(const already_AddRefd<T> aar) {} ~ObjRef() { T* mPtr; mPtr->release_ref(); } operator T* () const { return __null; } template<class U> void operator= (const already_AddRefd<U>& newAssign) {} }; class MyRetClass { public: void release_ref(); }; class MyClass { void appendChild(); void getTripleOutOfByPredicate(); already_AddRefd<MyRetClass> getNextTriple(); }; void MyClass::getTripleOutOfByPredicate() { ObjRef<MyRetClass> t (getNextTriple()); if (t == __null) throw MyRetClass(); } void MyClass::appendChild() { while (1) { try { ObjRef<MyRetClass> t (getNextTriple()); continue; } catch (MyRetClass) { } } }