Removing Globals construct() and destroy()
  ------------------------------------------                 26-Jan-95
  by Nathan Myers  <myersn@roguewave.com>               X3J16/95-0039
     Rogue Wave Software                                 WG21/N0639
 
  In Clause 20, a number of apparently unnecessary global functions are
  declared, including:
 
    template <class T>
      inline T* allocate(ptrdiff_t, T*);
 
    template <class T>
      inline void deallocate(T* buffer);
 
    template <class T, class T2>
      inline void construct(T* p, const T2& value);
 
    template <class T>
      inline void destroy(T* pointer);
 
    template <class FwdIter>
      void destroy(FwdIter first, FwdIter last)
        { while (first != last) destroy(&*first++); }
 
  I propose to eliminate all these functions.  While they may be useful
  in implementing STL and collections similar to it, they are not really
  necessary for the purposes of the Standard Library, in that they do
  not aid communication between modules, implement semantics that cannnot
  reproduced by users, or provide substantial functionality.  Furthermore,
  they are mostly subsumed by STL allocator members, which are what
  STL-conforming collections are expected to use.