template<typename T>
T __rol(T val, size_t count)
{
size_t bitcount = sizeof(T) * 8;
count %= bitcount;
return (val << count) | (val >> (bitcount - count));
}
template<typename T>
T __ror(T val, size_t count)
{
size_t bitcount = sizeof(T) * 8;
count %= bitcount;
return (val >> count) | (val << (bitcount - count));
}
https://forum.tuts4you.com/topic/23701-bitwise-rotation-with-cc-and-delphi/