GUID Generation and Invalidation
What I see here:

1.

You use autos, whose bit length is unknown in compile time. Despite that, the code uses them as 64-bit values. Afaik you should have some structural guarantee that they are really 64-bit (f.e. instead of "auto" use simply uint64_t).

2.

This code:

uint32_t version = 0;
version = ((eid &gt;&gt; 32) &amp; 0xFFFFFFFF) + 1;


could be simplified to

uint32_t version = ((eid &gt;&gt; 32) &amp; 0xFFFFFFFF) + 1;