
Last but not least the library now takes advantage of the fast_pool_allocator for objects such as "struct set" and "numeric::interval<int>". FYI I am using "numeric::interval<int>" instead of "numeric::interval<void *>" because of a compilation failure with
Phil wrote: the
latter. I am casting the pointers to an "int" meanwhile because there is >no lost of information by doing so according to the standards.
Pointers are certainly not guaranteed to be the same width as int by the standard. The standard doesn't get to say anything about the size of the built-in types, which may differ by hardware and compiler flags. void * p = ordered_malloc(s); get()->push_back(numeric::interval<int>((int) p, int((char *)(p) + s))); There are many platforms in which int is not the same number of bytes as a pointer. Most commonly such casts will cause code to fail to port to 64 bit platforms. Perhaps we can figure out how to overcome the compile error that caused you to add the cast, or figure out something you can cast the pointer to that will portably result in no loss of data, such as perhaps size_t. Luke