% g++ -std=c++20 -o main main.cpp In file included from /usr/include/c++/10.1.0/ext/alloc_traits.h:34, from /usr/include/c++/10.1.0/bits/stl_uninitialized.h:67, from /usr/include/c++/10.1.0/vector:66, from /usr/include/entt/core/algorithm.hpp:5, from /usr/include/entt/entt.hpp:1, from main.cpp:1: /usr/include/c++/10.1.0/bits/alloc_traits.h: In instantiation of ‘static constexpr void std::allocator_traits >::construct(std::allocator_traits >::allocator_type&, _Up*, _Args&& ...) [with _Up = Component; _Args = {}; _Tp = Component; std::allocator_traits >::allocator_type = std::allocator]’: /usr/include/c++/10.1.0/bits/vector.tcc:115:30: required from ‘std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = Component; _Alloc = std::allocator; std::vector<_Tp, _Alloc>::reference = Component&]’ /usr/include/entt/entity/storage.hpp:327:35: required from ‘void entt::storage >::emplace(entt::storage >::entity_type, Args&& ...) [with Args = {}; Entity = entt::entity; Type = Component; = void; entt::storage >::entity_type = entt::entity]’ /usr/include/entt/entity/registry.hpp:66:53: required from ‘decltype(auto) entt::basic_registry< >::pool_handler::emplace(entt::basic_registry< >&, Entity, Args&& ...) [with Args = {}; Component = Component; Entity = entt::entity]’ /usr/include/entt/entity/registry.hpp:647:43: required from ‘decltype(auto) entt::basic_registry< >::emplace(entt::basic_registry< >::entity_type, Args&& ...) [with Component = Component; Args = {}; Entity = entt::entity; entt::basic_registry< >::entity_type = entt::entity]’ /usr/include/entt/entity/registry.hpp:654:34: required from ‘decltype(auto) entt::basic_registry< >::assign(entt::basic_registry< >::entity_type, Args&& ...) [with Component = Component; Args = {}; Entity = entt::entity; entt::basic_registry< >::entity_type = entt::entity]’ /usr/include/entt/entity/registry.hpp:786:57: required by substitution of ‘template decltype (((entt::basic_registry< >::replace::func((declval)()) , ...), ((entt::basic_registry*)this)->assign(entity))) entt::basic_registry::replace(entt::basic_registry::entity_type, Func&& ...) [with Component = Component; Func = ]’ main.cpp:14:42: required from here /usr/include/c++/10.1.0/bits/alloc_traits.h:514:21: error: no matching function for call to ‘construct_at(Component*&)’ 514 | std::construct_at(__p, std::forward<_Args>(__args)...); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/10.1.0/bits/stl_tempbuf.h:60, from /usr/include/c++/10.1.0/bits/stl_algo.h:62, from /usr/include/c++/10.1.0/vector:62, from /usr/include/entt/core/algorithm.hpp:5, from /usr/include/entt/entt.hpp:1, from main.cpp:1: /usr/include/c++/10.1.0/bits/stl_construct.h:94:5: note: candidate: ‘template constexpr decltype (::new(void*(0)) _Tp) std::construct_at(_Tp*, _Args&& ...)’ 94 | construct_at(_Tp* __location, _Args&&... __args) | ^~~~~~~~~~~~ /usr/include/c++/10.1.0/bits/stl_construct.h:94:5: note: template argument deduction/substitution failed: /usr/include/c++/10.1.0/bits/stl_construct.h: In substitution of ‘template constexpr decltype (::new(void*(0)) _Tp) std::construct_at(_Tp*, _Args&& ...) [with _Tp = Component; _Args = {}]’: /usr/include/c++/10.1.0/bits/alloc_traits.h:514:21: required from ‘static constexpr void std::allocator_traits >::construct(std::allocator_traits >::allocator_type&, _Up*, _Args&& ...) [with _Up = Component; _Args = {}; _Tp = Component; std::allocator_traits >::allocator_type = std::allocator]’ /usr/include/c++/10.1.0/bits/vector.tcc:115:30: required from ‘std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = Component; _Alloc = std::allocator; std::vector<_Tp, _Alloc>::reference = Component&]’ /usr/include/entt/entity/storage.hpp:327:35: required from ‘void entt::storage >::emplace(entt::storage >::entity_type, Args&& ...) [with Args = {}; Entity = entt::entity; Type = Component; = void; entt::storage >::entity_type = entt::entity]’ /usr/include/entt/entity/registry.hpp:66:53: required from ‘decltype(auto) entt::basic_registry< >::pool_handler::emplace(entt::basic_registry< >&, Entity, Args&& ...) [with Args = {}; Component = Component; Entity = entt::entity]’ /usr/include/entt/entity/registry.hpp:647:43: required from ‘decltype(auto) entt::basic_registry< >::emplace(entt::basic_registry< >::entity_type, Args&& ...) [with Component = Component; Args = {}; Entity = entt::entity; entt::basic_registry< >::entity_type = entt::entity]’ /usr/include/entt/entity/registry.hpp:654:34: required from ‘decltype(auto) entt::basic_registry< >::assign(entt::basic_registry< >::entity_type, Args&& ...) [with Component = Component; Args = {}; Entity = entt::entity; entt::basic_registry< >::entity_type = entt::entity]’ /usr/include/entt/entity/registry.hpp:786:57: required by substitution of ‘template decltype (((entt::basic_registry< >::replace::func((declval)()) , ...), ((entt::basic_registry*)this)->assign(entity))) entt::basic_registry::replace(entt::basic_registry::entity_type, Func&& ...) [with Component = Component; Func = ]’ main.cpp:14:42: required from here /usr/include/c++/10.1.0/bits/stl_construct.h:96:17: error: no matching function for call to ‘Component::Component()’ 96 | -> decltype(::new((void*)0) _Tp(std::declval<_Args>()...)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ main.cpp:6:5: note: candidate: ‘Component::Component(int)’ 6 | Component(int a) : a(a) {} | ^~~~~~~~~ main.cpp:6:5: note: candidate expects 1 argument, 0 provided main.cpp:3:8: note: candidate: ‘constexpr Component::Component(const Component&)’ 3 | struct Component { | ^~~~~~~~~ main.cpp:3:8: note: candidate expects 1 argument, 0 provided main.cpp:3:8: note: candidate: ‘constexpr Component::Component(Component&&)’ main.cpp:3:8: note: candidate expects 1 argument, 0 provided