diff --git a/src/blackmisc/algorithm.h b/src/blackmisc/algorithm.h index 6bcc85de1..0571873e1 100644 --- a/src/blackmisc/algorithm.h +++ b/src/blackmisc/algorithm.h @@ -11,8 +11,6 @@ #ifndef BLACKMISC_ALGORITHM_H #define BLACKMISC_ALGORITHM_H -#include -#include #include #include #include @@ -45,16 +43,12 @@ namespace BlackMisc namespace Private { - //! \private A high quality deterministic pseudo-random number generator. + //! \private A high quality pseudo-random number generator. //! \threadsafe inline std::mt19937 &defaultRandomGenerator() { - //! \fixme Move rng to namespace scope to ensure destruction after function-local statics - //! and avoid warning "thread exited after QThreadStorage destroyed". - //! This will require careful thought about linkage. - static QThreadStorage rng; - if (rng.hasLocalData()) { rng.setLocalData(std::mt19937(static_cast(QRandomGenerator::global()->generate()))); } - return rng.localData(); + thread_local std::mt19937 rng(std::random_device{}()); + return rng; } } diff --git a/src/blackmisc/inheritancetraits.h b/src/blackmisc/inheritancetraits.h index 8e3c5d316..79ff05e54 100644 --- a/src/blackmisc/inheritancetraits.h +++ b/src/blackmisc/inheritancetraits.h @@ -12,9 +12,11 @@ #define BLACKMISC_INHERITANCE_TRAITS_H #include "blackmisc/typetraits.h" // for void_t -#include #include +template +struct QMetaTypeId; + namespace BlackMisc { class CPropertyIndex; diff --git a/src/blackmisc/predicates.h b/src/blackmisc/predicates.h index 8c9461d66..cff601bf3 100644 --- a/src/blackmisc/predicates.h +++ b/src/blackmisc/predicates.h @@ -12,8 +12,6 @@ #define BLACKMISC_PREDICATES_H #include "blackmisc/algorithm.h" - -#include #include #include diff --git a/src/blackmisc/slot.h b/src/blackmisc/slot.h index 496dc0da1..4126a86a4 100644 --- a/src/blackmisc/slot.h +++ b/src/blackmisc/slot.h @@ -16,7 +16,6 @@ #include #include #include -#include #include #include