So I audited the code by compiling by using
class BufferID : public IntWrapper<BufferIDTag, uint32_t>
{
BufferID(uint32_t val) : IntWrapper(val) {}
BufferID() = delete;
}
to catch anywhere that we were using the default constructor. It only being used in the RecentlyUsedCache and in some places in the tests. I improved these to not rely on the invalid concept.
I didn't see a good reason to change BufferID further, so kept the current use:
typedef IntWrapper<BufferIDTag, uint32_t> BufferID;
So I audited the code by compiling by using BufferIDTag, uint32_t>
class BufferID : public IntWrapper<
{
BufferID(uint32_t val) : IntWrapper(val) {}
BufferID() = delete;
}
to catch anywhere that we were using the default constructor. It only being used in the RecentlyUsedCache and in some places in the tests. I improved these to not rely on the invalid concept.
I didn't see a good reason to change BufferID further, so kept the current use: BufferIDTag, uint32_t> BufferID;
typedef IntWrapper<