#ifndef ENTT_CORE_FAMILY_HPP #define ENTT_CORE_FAMILY_HPP #include "../config/config.h" #include "fwd.hpp" namespace entt { /** * @brief Dynamic identifier generator. * * Utility class template that can be used to assign unique identifiers to types * at runtime. Use different specializations to create separate sets of * identifiers. */ template class family { inline static ENTT_MAYBE_ATOMIC(id_type) identifier{}; public: /*! @brief Unsigned integer type. */ using family_type = id_type; /*! @brief Statically generated unique identifier for the given type. */ template // at the time I'm writing, clang crashes during compilation if auto is used instead of family_type inline static const family_type type = identifier++; }; } // namespace entt #endif