Boost logo

Boost :

From: Corrado Zoccolo (czoccolo_at_[hidden])
Date: 2007-11-18 13:00:34

Hi Giovanni

On Nov 18, 2007 1:59 PM, Giovanni Piero Deretta <gpderetta_at_[hidden]> wrote:

> Maybe you can use SFINAE to detect if a class implements operator new.
> I'm not sure if
> it can be done for operator new, it certainly can be done for other
> member functions.
> --
> gpd

I think SFINAE is not enough to replicate faithfully the rules employed by
the compiler to select the which operator new is called for an expression
like new T(a1,..,an) . It will look not only in T, but also in its base

I solved differently, by writing an adapter around in_place_factory (that
can be found attached).
Basically, I create a set of classes typed_out_of_place_factory##N, each
inheriting from typed_in_place_factory##N, that provide me the correct apply
overload, and a template function to ease the conversion (out_of_place:
typed_in_place_factory##N -> typed_out_of_place_factory##N).

The only drawback of this, w.r.t. changing in_place_factory to provide this
behavior, is that I have to include it always, so the preprocessor magic
overhead is always paid. The other solution, the client code would include
it only when it is actually used.

dott. Corrado Zoccolo                          mailto:zoccolo_at_[hidden]
PhD - Department of Computer Science - University of Pisa, Italy
The self-confidence of a warrior is not the self-confidence of the average
man. The average man seeks certainty in the eyes of the onlooker and calls
that self-confidence. The warrior seeks impeccability in his own eyes and
calls that humbleness.
                              Tales of Power - C. Castaneda

Boost list run by bdawes at, gregod at, cpdaniel at, john at