struct X
{
   void operator deleteme(void *);
   void deallocate(int *p)
   {
      operator delete((void *)p);
      delete((void *)q);
   }
};

int f(bool b)
{
   typedef int   mytype;
   if (b)
   {
      return(int(42.0));
   }
   else
   {
      return(mytype(42.0));
   }
}

struct X
{
   double f(int n)
   {
      return(double(n));
   }
};

inline value_type operator ()() const
{
   return(double(rnd32()) * (0.5 / 0x80000000));
}

