в реализации libstdc++ есть класс new_allocator(http://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc /api/a00958_source.html), от которого без каких-либо видимых причин наследуется std::allocator(http://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc /api/a00751_source.html), который и используется по умолчанию во всей остальной части библиотеки. Может кто-то пояснить причину такого наследования, и почему нельзя было ограничиться базовым классом?
кроме того, возник вопрос по реализации new_allocator, конкретно функции construct
void
construct(pointer __p, const _Tp& __val)
::new((void *)__p) _Tp(__val); }
затрудение вызывает ::new(void* adr), хотя в заголовке <new>(http://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc /api/a00957_source.html) указаны только ::operator new(size_t n). где я могу почитать про ::new(void* adr) ?