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)); }