Not at all. Once you established that it's not a pointer namely since every pointer to size_t is word aligned (unless constructed by hand). You could use it's lowest bit as marker then. It's 0 state won't disturb pointer usual semantics, when it's set to 1 it's obviously
... in-place bit array. So it's cheap tag for your union. -- Dmitry Olshansky