#include <new>
#include <cstdlib>

class X
{
protected:
  static void* operator new(size_t sz);
  static void  operator delete(void* p) noexcept;
};

class Y : public X { };  // inheritance is ok
class Z { X x; };        // ok

X x1;                    // ok
int main()
{
  X x2;                  // ok
  Y y1;                  // ok
  X* xp = new X;         // syntax error
  Y* yp = new Y;         // syntax error

  delete xp;             // syntax error
  delete yp;             // syntax error
};