Thanks Benjamin, a minor nit: >- __tmp += __mod<_UInt32Type, 1, 0, 0>(__gen()) * __factor; >- __factor *= _Shift<_UIntType, 32>::__value; >+ __tmp += __detail::__mod<__detail::_UInt32Type, 1, 0, 0>(__gen()) * __factor; > > overlong line? Paolo.