title: Deallocation function precludes use of an allocation with two parameter
body: <p>Here is from 3.7.4.2 N3797:</p>
  
  <blockquote>
    <p>The global operator delete[] with exactly two parameters, the second
    of which has type std::size_t, is a usual deallocation function.37</p>
    
    <p>37) This deallocation function precludes use of an allocation function
    void operator new(std::size_t, std::size_t) as a placement allocation
    function</p>
  </blockquote>
  
  <p>This note is not clear for me. I would like to look at the real example of that preclusion. Compiler will throw a warning or we have a runtime error? I've been trying to write something like the following:</p>
  
  <pre><code>using std::cout;
  struct A
  {
      int a;
      A(){ a = 5; }
      void * operator new(std::size_t t, std::size_t)
      {
          void *p = ::operator new(t);
          return p;
      }
  };
  
  int main(){ }
  </code></pre>
  
  <p>And I have no idea about example which reflects this preclusion. Could you help me provided one?</p>