I have just made the repo of my C++ STL replacement lib public on github. It's called Bedrock. It's got the usual things, Vector, String, Atomic etc. but also a very good HashMap and few interesting allocators (details on blog: danglingpointers.com/post/bedrock...) github.com/jlaumon/Bedr...

GitHub - jlaumon/Bedrock: Mini...
The allocators of Bedrock, my own C++ STL alternative - Dangling Pointers

Bedrock is a C++ STL replacement library. It comes with several specialized allocators that are faster than using the heap, while still being convenient to use.

@jeremy.laumon.name Nice, from a quick look (e.g. Span, Vector) it's using int instead of size_t for operator[] and lengths.

Curious if that's to avoid unsigned types (unless working with bit-shifting logic), or mainly to save 4 bytes on the struct sizes?

@laurelkeys @jeremy.laumon.name yes, sizes/capacities are 4 bytes to save space and because I'm fairly confident I will never need more that 2 billion items 😄 (and if I do, I'll make a specific thing for that case). Memory block sizes use int64 because I might need to allocate more than 2GB 😉

And both are signed I want to be able to detect underflows and signed integers come with a built-in solution for that 😂

@jerem @laurelkeys @jeremy.laumon.name
Something I learner last year is that integer wrap around is still called overflow no matter which direction it goes.
Underflow is when something gets set to 0 because it cannot be represented.
But in this case I assume you mean going below 0.