Boost logo

Boost :

From: Douglas Gregor (gregod_at_[hidden])
Date: 2002-02-04 10:10:48


On Monday 04 February 2002 07:59 am, you wrote:
> I think that if we add another template parameter to boost::function,
> Storage, with requirements that

> (1) sizeof(Storage) >= sizeof(void*),

Okay.

> (2) an object of type Storage always has the correct alignment for every
> type T such that sizeof(T) <= sizeof(Storage),

Just for reference - how is this accomplished? Portably?

> then (a) the implementation of boost::function could be simplified,

Going to have to go whip up some proof pudding on this one. I would
definately say that this small string optimization should be factored out
into its own library, because I'm sure there are many libraries that could
benefit from this. boost::any surely comes to mind, as it's been requested
before that boost::any support the small string optimization. Something like:

template<typename Storage = default_storage>
struct small_string_optimization {
  template<typename T>
  struct can_optimize {
    BOOST_STATIC_CONSTANT(bool, value = /* whatever */);
  };

  template<typename T> T* storage(T* = 0 /* msvc hack */)
    { return /* pointer to internal storage */; }
};

        Doug


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk