Changelog
-
config:ENTT_CONSTEXPRis no longer availableENTT_NOEXCEPTIONrenamed intoENTT_NO_EXCEPTION- Add
ENTT_USE_STL(mainly for testing purposes) - Support injecting configuration via optional
<entt/ext/config.h>header 👈✍️
-
core:entt::identityis no longer availableentt::popcountis no longer availableentt::has_single_bitis no longer availableentt::next_power_of_twois no longer availableentt::type_identityis no longer availableentt::to_addressis no longer available- Added concept
enum_bitmask - Added concept
cvref_unqualified - Refine
type_infodefinition to favor concepts over sfinae - Invoking
as_refon an emptyanyreturns and emptyany - Update
type_iddefinitions for the best member_classisconditional_tfriendly
-
entity- View-to-view conversion support for all view types
- Added concept
entt_like - Refine
component_traitsdefinition to favor concepts over sfinae - Perf improvements on storage destruction for trivially destructible types
- Perf improvements on component destruction for trivially destructible types
- Perf improvements when shrinking storage types
- Reintroduce storage support to arguments for empty types
-
meta:namereturns anstd::string_viewfor all meta objects- Added the new
meta_baseobject base()returnsmeta_baseobjects in all cases- Added concept
meta_policy - Support name clashing between meta data/functions and types
- Refine
is_meta_pointer_likedefinition to favor concepts over sfinae - Copying a
meta_anythat wraps a non-copyable type returns an invalidmeta_any - Added a non-const overload of
meta_any::operator* - Pointers are no longer pointer-like types
meta_anysupports all dereferenceable types, i.e. optionals (constness is also guaranteed)- Meta containers are automatically detected, meta container traits are used to opt-out
- Multi meta type support for the same C++ type 👈😲
meta_types can be injected intometa_anys to rebind overloaded types as neededmeta_data::arityreplaced withmeta_data::set_arityandmeta_data::get_aritymeta_data::argreplaced withmeta_data::set_argandmeta_data::get_argmeta_ctx_arg_tandmeta_ctx_argare exported viafwd.hpptoometa_type::idrenamed tometa_type::aliasmeta_data::setsupports additional arguments upon invocation (useful for custom setters)meta_data::getsupports additional arguments upon invocation (useful for custom getters)
-
signal:- Support enqueueing the same event type in a dispatcher from listeners
- Update dispatcher
triggerfunction to only accept already constructed events
-
stl:- A brand new submodule, mainly designed for internal purposes
- Custom STL injection support 👈🥳
-
tools:- Make
daveyvisit meta base types - Conditionally include
<imgui>indavey.hpp - Improve a little the testbed for
davey, but it's still a work in progress
- Make
Build system
- C++20 is now required to use
EnTT - Minimum cmake version updated to 3.28
- Minimum doxygen version updated to 1.14
Natvis support
All natvis files have been updated where necessary.
Breaking changes
-
config:ENTT_CONSTEXPRis no longer available, useconstexprinsteadENTT_NOEXCEPTIONrenamed intoENTT_NO_EXCEPTION
-
core:entt::identityis no longer available, usestd::identityinsteadentt::popcountis no longer available, usestd::popcountinsteadentt::has_single_bitis no longer available, usestd::has_single_bitinsteadentt::next_power_of_twois no longer available, usestd::bit_ceilinsteadentt::type_identityis no longer available, usestd::type_identityinsteadentt::to_addressis no longer available, usestd::to_addressinsteadtype_infono longer matches sfinae-based specialization, use concepts instead
-
entity:component_traitsno longer matches sfinae-based specializations, use concepts instead
-
meta:base()returnsmeta_baseobjects instead ofmeta_typesis_meta_pointer_likeno longer matches sfinae-based specialization, use concepts instead- Pointers are no longer pointer-.like types, check the right trait as needed
- Meta containers are automatically detected, meta container traits are used to opt-out
meta_data::aritywas removed, usemeta_data::set_arityandmeta_data::get_arityinsteadmeta_data::argwas removed, usemeta_data::set_argandmeta_data::get_arginsteadmeta_type::idno longer exists, usemeta_type::aliasinsteadmeta_type::invokeoverload formeta_any *is not supported anymoremeta_func::invokeoverload formeta_any *is not supported anymoremeta_type::constructoverload formeta_any *is not supported anymore
-
signal:- The
triggerfunction of a dispatcher only accepts already constructed events now
- The
Any other business
The library requires C++20-ish and works fine on all major platforms, consoles, whatever.
All previously deprecated functions and classes have been removed.
The clang-format configuration has been updated to match with the coding style.
The documentation is up-to-date and the library is battle-tested with 100% coverage as usual.