Recursive mutex allows the same thread to recursively lock a resource - up to an unspecified limit.
There are very few real-word justifications for this. Certain complex implementations might need to call an overloaded copy of a function without releasing the lock.
std::atomic_int temp{0};
...