R4475058.C   [plain text]


/* APPLE LOCAL file Radar 4475058 */
/* { dg-compile } */
/* { dg-options "-O" } */

struct   C1
{
};

template <class T> class T1
{
private: 
  T * _p;
public: 
  T * operator -> () { return _p; }
};

class C2 : public C1
{
};

class C3
{
public:
  C1 * _c3f1(C2 *k, C1 *v);
  C2 * c3f1(C2 *k, C2 *v) { return (C2 *)_c3f1(k, v); }
};

typedef T1<C3> RC3;
class C4
{
public:
  void c4f1( C4 * p);
protected:
  RC3 _pN;
};

C2 *foo (C2 **p)
{
  return *p;
}

class C5 : public C2
{
};

void C4::c4f1( C4 * p) 
{     
  C2 * k;   
  C5 * n; 

  while (  ( n = (static_cast<C5*>(foo (&k)))))
    _pN->c3f1( k, n);  
}