木头云 8bd5c83349 fix(container_allocator): Fix MSVC error by correcting allocator semantics
ROOT CAUSE:
The allocate() function was incorrectly constructing objects during memory
allocation, violating C++ allocator requirements. MSVC's std::_Tree_node has
a deleted default constructor, causing compilation failure.

CHANGES:
1. container_allocator::allocate() - Now only allocates raw memory without
   constructing objects (removed mem::$new and ipc::construct calls)
2. container_allocator::deallocate() - Now only frees memory without
   destroying objects (removed mem::$delete and ipc::destroy_n calls)

WHY THIS FIXES THE ISSUE:
- C++ allocator semantics require strict separation:
  * allocate()   -> raw memory allocation
  * construct()  -> object construction
  * destroy()    -> object destruction
  * deallocate() -> memory deallocation

- std::map and other containers call construct() with proper arguments
  (key, value) to initialize nodes, not allocate()

- std::_Tree_node in MSVC has no default constructor (= delete), so
  attempting to construct it without arguments always fails

- The previous code tried to default-construct objects in allocate(),
  which is both semantically wrong and impossible for _Tree_node

PREVIOUS FIX (uninitialized.h):
The earlier fix to uninitialized.h was insufficient - even with correct
T() vs T{} handling, you cannot default-construct a type with deleted
default constructor.

Fixes MSVC 2017 compilation error:
error C2280: attempting to reference a deleted function
2025-12-01 07:48:44 +00:00
..
concur Add intrusive_stack 2025-03-09 18:02:51 +08:00
imp fix(uninitialized): Fix MSVC compilation error with std::map node construction 2025-12-01 07:31:15 +00:00
mem fix(container_allocator): Fix MSVC error by correcting allocator semantics 2025-12-01 07:48:44 +00:00
buffer.h IPC_EXPORT => LIBIPC_EXPORT 2025-03-09 18:02:51 +08:00
condition.h IPC_EXPORT => LIBIPC_EXPORT 2025-03-09 18:02:51 +08:00
def.h Start refactoring memory management, adding memory_resource 2025-03-09 18:02:51 +08:00
ipc.h IPC_EXPORT => LIBIPC_EXPORT 2025-03-09 18:02:51 +08:00
mutex.h IPC_EXPORT => LIBIPC_EXPORT 2025-03-09 18:02:51 +08:00
rw_lock.h reduce the number of recheck times for the sleep function 2021-09-20 23:29:30 +08:00
semaphore.h IPC_EXPORT => LIBIPC_EXPORT 2025-03-09 18:02:51 +08:00
shm.h IPC_EXPORT => LIBIPC_EXPORT 2025-03-09 18:02:51 +08:00