http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57110
--- Comment #2 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2013-04-29 11:47:54 UTC --- Understood. The question should than be escalated to the c++ standard committee In my opinion the use of a 32-bit unsigned int as storage and return type for a mersenne_twister_engine with word_size=32 is wrong (besides being unnecessary and inefficient) in any case std::mt19937 is just a type alias: users can define their own using uint32_t in case they care of computational efficiency.