// Test for composite pointer types, as defined in [expr.rel],
// and common pointer to member types, as defined in [expr.eq].

struct A { int i; };
struct B : public A { };

int main ()
{
  B b;

  // The composite type is `A const *'
        A* ap = &b;
  const B* bp = &b;
  if (ap != bp)		// gets bogus error - distinct types
    return 1;

  // The composite type is `B const *const *'
  B       *const * p = 0;
  B const *      * q = 0;
  if (p != q)		// gets bogus error - distinct types
    return 1;

  // The common type is `int const B::*'
  const int A::*apm = &A::i;
        int B::*bpm = &A::i;
  if (apm != bpm)	// gets bogus error - distinct types
    return 1;
}
