Steven,

I know at least 2 books which describe this possibility and there is nothing stated about undefined behavior. I just double checked the ISO 2003 C++ Standards and did not find anything which disallows the presented approach. Can you point me to the paragraph in the Standard?


Thanks,
Ovanes





Seems, like I forgot the signature... Another way to transfer the bytes
would be:

union bytes2seed
{
  uint64_t seed_;
  char      bytes_[sizeof(uint64_t)];
};

bytes2seed converter;

Now one can pass &converter.bytes_[0] to CryptGenRandom. This does not
require an additional memcpy call.
 

Casting through a union is undefined behavior.  :(.