I observed some further missing definitions of constant static members of integral type, which have been initialized in-class: 1) additive_combine.hpp Proposal: Add the following #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION // A definition is required even for integral static constants template<class MLCG1, class MLCG2, #ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS typename MLCG1::result_type #else int32_t #endif val> const bool additive_combine<MLCG1, MLCG2, val>::has_fixed_range; template<class MLCG1, class MLCG2, #ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS typename MLCG1::result_type #else int32_t #endif val> const typename additive_combine<MLCG1, MLCG2, val>::result_type additive_combine<MLCG1, MLCG2, val>::min_value; template<class MLCG1, class MLCG2, #ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS typename MLCG1::result_type #else int32_t #endif val> const typename additive_combine<MLCG1, MLCG2, val>::result_type additive_combine<MLCG1, MLCG2, val>::max_value; #endif 2) What is actually the reason for the trailing whitespace on streaming of the class template discard_block? It seems inconsistent compared to the other outputs. 3) linear_congruential.hpp: Add missing static member definitions for linear_congruential: #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION ... // Other already defined constants template<class IntType, IntType a, IntType c, IntType m, IntType val> const IntType linear_congruential<IntType,a,c,m,val>::multiplier; #endif .. and for class rand48 (in its corresponding cpp, not the header): #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION ... // Other already defined constants const bool rand48::has_fixed_range; const int32_t rand48::min_value; const int32_t rand48::max_value #endif Greetings from Bremen, Daniel Krügler