// { dg-do assemble } // GROUPS passed old-abort // Should have been fixed by: // // Sun Jun 13 12:55:22 1993 Brendan Kehoe (brendan@lisa.cygnus.com) // // * cp-cvt.c (build_default_binary_type_conversion): Look deeper into // what ARG1 and ARG2 are if they're POINTER_TYPEs. class CountableSet { public: virtual ~CountableSet() { } }; template class FixedSet : virtual public CountableSet { public: virtual int Get(int, T&) = 0; virtual ~FixedSet() { } }; class ShrinkableSet { public: virtual int Remove(int) = 0; }; template class PVSet : virtual public FixedSet, virtual public ShrinkableSet { public: virtual void Append(const T&) = 0; virtual void operator+=(const T& a) { Append(a); } virtual ~PVSet() { } }; template class MutSet : virtual public FixedSet, virtual public FixedSet { protected: typedef T *Tp; public: void Append(const Tp& tp) { Append(*tp); } T& Access(int p) { Tp tp; Get(p, tp); return *tp; } virtual ~MutSet() { } }; template class SimpleSet : virtual public MutSet { protected: T *array; int size; virtual void Allocate(int s) { array = new T[s]; } public: SimpleSet() { size = 0; array = 0; } int Get(int p, T& t) { t = array[p-1]; return 1; } int Get(int p, T *& t) { t = &array[p-1]; return 1; } inline void Append(const T& a) { array[size-1] = a; } inline int Remove(int n) { return 0; } }; class Dummy { public: Dummy() {} }; int main() { SimpleSet bs1; int i, j; Dummy foo; bs1+=&foo;// { dg-error "" } no .* }