using some debugging, it turned out that std :: allocate_shared does what is expected, it allows you to make only one distribution for both your object and the reference counter.
The code is adjusted below:
select the shared file
Here, the new operator is called exactly once for std :: make_shared and std :: allocate_shared. Using this pool of objects can be created, and you can have the same efficiency expected from boost :: intrusive_ptr, which needs additional coding.
source
share