// Origin: Alexander Schiemann (aschiem@count.math.uni-sb.de)

typedef __SIZE_TYPE__ size_t;

int i;

struct B{};

struct A{

  static void* operator new(size_t)
  {return &i;}

  inline static void operator delete(void*p); 

  static void operator delete(void*, const B&){} 

};


inline void A::operator delete(void*p)
{A::operator delete(p,B());}


int main()
{A *ap=new A;
delete ap;}
