Boost logo

Boost :

From: Maxim Egorushkin (e-maxim_at_[hidden])
Date: 2003-03-23 12:19:51

I think it would be great to make boost::any's memory allocation
strategy for value holder customizable. It would allow to use not only
global new operator, but any other special fast allocators like, for
example, Loki::SmallObject.


The changes are minor and would not break existing code.


All it takes is to change class name and:



struct use_default_allocator {};

//class any

template<class A = use_default_allocator> class any_ex


// ...

// class placeholder

class placeholder : public A // derive operators new() and delete()

// ...



typedef any_ex<> any; // for not breaking existing code



And change any_cast functions appropriately.


I've measured performance using Intel VTune. The
any_ex<Loki::SmallObject> was about twice as fast as any_ex<> with MS
VC++ 7 and Intel C++ 7.


There is sure a possibility to write a faster allocator than


So, the hardcoded memory allocation strategy makes more harm then good
to boost::any. Changes would make boost::any more extensible and


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