// { dg-do assemble  }
template <int object_size>
class _fixed_size_allocator
{
  private:
    struct      something { };
    static something *  asdf;
  public:
    static void         delete_object ();
};
template <class T>
class object_allocator
{
  private:
    typedef     _fixed_size_allocator<sizeof (T)>               allocator;
  public:
    static void         deallocate (T * p)
    {
        allocator::delete_object (reinterpret_cast<void *> (p));
    }
};