https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69850

--- Comment #13 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
template <typename T> struct A {
  static void release(T *p1) { p1->Release(); }
};
template <typename T> class IntrusiveRefCntPtr {
  T Obj;
public:
  void operator=(IntrusiveRefCntPtr) { A<T>::release(&Obj); }
};
struct RopeRefCountString {
  void Release() { delete[] this; }
};
struct RopePiece {
  IntrusiveRefCntPtr<RopeRefCountString> StrData;
};
class RopePieceBTreeNode {
protected:
  enum { WidthFactor };
};
class RopePieceBTreeLeaf : RopePieceBTreeNode {
  RopePiece Pieces[WidthFactor];
  RopePieceBTreeNode *insert(const RopePiece &);
};
int a;
RopePieceBTreeNode *RopePieceBTreeLeaf::insert(const RopePiece &) {
  Pieces[a] = Pieces[1];
}

Reply via email to