void computeHash() const { Q_ASSERT(dynamic); //this must stay thread-safe(may be called by multiple threads at a time) //The thread-safety is given because all threads will have the same result, and it will only be written once at the end. uint hash = m_identifier.hash(); FOREACH_FUNCTION_STATIC(const IndexedTypeIdentifier& templateIdentifier, templateIdentifiers) hash = hash * 13 + templateIdentifier.hash(); hash += m_unique; m_hash = hash; }