[gnu.g++.bug] derivation and pointers to members

loepere@westford.ccur.com (06/20/89)

In "Pointers to Class Members in C++" (1988 USENIX C++ Conference) it
is claimed that a value of type "pointer to member" for a base class
can be assigned to a variable of type "pointer to member" for a class
derived from that base.  This does not seem to work (1.34). - Keith

#include <stream.h>

class hospital_room
{
 public:
  int room_no;
  int patient_id;

  inline hospital_room (const int a_room_no, const int a_patient_id)
    {
      room_no = a_room_no;
      patient_id = a_patient_id;
    }
};

class maternity_room : public hospital_room
{
 public:
  int baby_patient_id;

  inline maternity_room (const int a_room_no, const int a_patient_id, const int a_baby_patient_id)
    : hospital_room (a_room_no, a_patient_id)
      {
	baby_patient_id = a_baby_patient_id;
      }
};

int main ()
{
  maternity_room room123 (123, 123456, 1234567);

  typedef int (maternity_room::*derived_ptr_t);
  derived_ptr_t maternity_room_no_p = &hospital_room::room_no;

  cout << (room123.*maternity_room_no_p);
}