Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur en compilation

Sujet résolu
    28 juillet 2022 à 20:02:42

    Salut j'ai créer une spécialisation pour ne pas avoir d'erreur en compilation si je fais std::get sur un tuple qui est vide.

    struct DynamicTuple {
                std::tuple<std::vector<TupleTypes>...> content;
                using types = typename std::tuple<TupleTypes...>;
    
    
                template <typename H, class = typename std::enable_if_t<contains<H, TupleTypes...>::value>>
                DynamicTuple add (H head) {
                    std::get<std::vector<H>>(content).push_back(head);
                    return *this;
                }
                template <typename H, class = typename std::enable_if_t<!contains<H, TupleTypes...>::value>>
                DynamicTuple <TupleTypes..., H> add (H head) {
                    DynamicTuple<TupleTypes..., H> tuple;
                    tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                    return tuple.add(head);
                }
                template <typename H, class = typename std::enable_if_t<!contains<H, TupleTypes...>::value>>
                DynamicTuple <TupleTypes..., H> addType () {
                    DynamicTuple<TupleTypes..., H> tuple;
                    tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                    return tuple;
                }
                template <typename T>
                constexpr size_t vectorSize() {
                    return std::get<std::vector<T>>(content).size();
                }
                static constexpr size_t nbTypes() {
                    return std::tuple_size<types>::value;
                }
                template <typename T>
                static constexpr size_t getIndexOfTypeT() {
                    return index<T, TupleTypes...>();
                }
                template <typename T, class... D,class = typename std::enable_if_t<(std::tuple_size<types>::value > 0)>>
                T* get(unsigned int containerIdx) {
                    constexpr size_t I = getIndexOfTypeT<T>();
                    return (containerIdx < vectorSize<T>()) ? &std::get<I>(content)[containerIdx] : nullptr;
                }
                template <size_t I>
                auto get(unsigned int containerIdx) {
                    return std::get<I>(content)[containerIdx];
                }
                template <size_t I>
                auto removeType() {
                    return details::remove_Nth<I>(*this);
                }
                template <typename T>
                auto removeType() {
                    return details::remove_Nth<index<T, TupleTypes...>()>(*this);
                }
                template <typename T>
                auto remove(T element) {
                    std::vector<T> elements = std::get<index<T, TupleTypes...>()>(content);
                    typename std::vector<T>::iterator it;
                    for (it = elements.begin(); it != elements.end(); it++) {
                        if (*it == &element) {
                            elements.erase(it);
                        } else {
                            it++;
                        }
                    }
                    if (std::get<index<T, TupleTypes...>()>(content).size() == 0) {
                        return removeType<T>();
                    }
                    return *this;
                }
            };
            template <>
            struct DynamicTuple<> {
                std::tuple<> content;
                using types = typename std::tuple<>;
    
    
                template <typename H>
                DynamicTuple <H> add (H head) {
                    DynamicTuple<H> tuple;
                    tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                    return tuple.add(head);
                }
                template <typename H>
                DynamicTuple <H> addType () {
                    DynamicTuple<H> tuple;
                    tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                    return tuple;
                }
                template <typename T>
                constexpr size_t vectorSize() {
                    return 0;
                }
                static constexpr size_t nbTypes() {
                    return std::tuple_size<types>::value;
                }
                template <typename T>
                static constexpr size_t getIndexOfTypeT() {
                    return -1;
                }
                template <typename T>
                T* get(unsigned int containerIdx) {
                    return nullptr;
                }
                template <size_t I>
                auto get(unsigned int containerIdx) {
                    return nullptr;
                }
                template <size_t I>
                auto removeType() {
                    return *this;
                }
                template <typename T>
                auto removeType() {
                    return *this;
                }
                template <typename T>
                auto remove(T element) {
                    return *this;
                }
            };

    Malheureusement j'ai quand même une erreur en compilation


    /usr/include/c++/11/tuple|1360|error: static assertion failed: tuple index is in range|
    /usr/include/c++/11/tuple|1360|note: ‘(18446744073709551614 < ((long unsigned int)std::integral_constant<long unsigned int, 0>::value))’ evaluates to false|
    /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp||In instantiation of ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::SceneGridComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::core::DynamicTuple<>}]’:|

    Le compilateur ne choisit pas la spécialisation, pourquoi ?

    int main() {
        DynamicTuple systemArray, componentArray, sceneArray, rendererArray;
        sorrok::MyECSAppli app(sf::VideoMode(800, 600), "Test odfaeg");
        return app.exec(systemArray, sceneArray, rendererArray, componentArray);
    }

    Merci d'avance


    • Partager sur Facebook
    • Partager sur Twitter
      28 juillet 2022 à 22:05:13

      Salut,

      Tu renvoie -1 dans ta fonction getIndexOfTypeT.  Mais cette fonction renvoie une valeur de type size_t, c'est à dire une valeur exclusivement positive.

      Que vaut donc -1 dans de telles circonstances?

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
        4 août 2022 à 18:59:05

        Salut! J'ai retiré le -1 :

        #ifndef ODFAEG_DYNAMIC_TUPLE_HPP
        #define ODFAEG_DYNAMIC_TUPLE_HPP
        #include <tuple>
        #include <vector>
        #include "tmp.hpp"
        namespace odfaeg {
            namespace core {
                namespace details {
                    template<std::size_t N, typename T>
                    auto remove_Nth(T& tuple);
                }
                template <typename... TupleTypes>
                struct DynamicTuple {
                    std::tuple<std::vector<TupleTypes>...> content;
                    using types = typename std::tuple<TupleTypes...>;
        
        
                    template <typename H, class = typename std::enable_if_t<contains<H, TupleTypes...>::value>>
                    DynamicTuple add (H head) {
                        std::get<std::vector<H>>(content).push_back(head);
                        return *this;
                    }
                    template <typename H, class = typename std::enable_if_t<!contains<H, TupleTypes...>::value>>
                    DynamicTuple <TupleTypes..., H> add (H head) {
                        DynamicTuple<TupleTypes..., H> tuple;
                        tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                        return tuple.add(head);
                    }
                    template <typename H, class = typename std::enable_if_t<!contains<H, TupleTypes...>::value>>
                    DynamicTuple <TupleTypes..., H> addType () {
                        DynamicTuple<TupleTypes..., H> tuple;
                        tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                        return tuple;
                    }
                    template <typename T>
                    constexpr size_t vectorSize() {
                        return std::get<std::vector<T>>(content).size();
                    }
                    static constexpr size_t nbTypes() {
                        return std::tuple_size<types>::value;
                    }
                    template <typename T>
                    static constexpr size_t getIndexOfTypeT() {
                        return index<T, TupleTypes...>();
                    }
                    template <typename T, class... D,class = typename std::enable_if_t<(std::tuple_size<types>::value > 0)>>
                    T* get(unsigned int containerIdx) {
                        constexpr size_t I = getIndexOfTypeT<T>();
                        return (containerIdx < vectorSize<T>()) ? &std::get<I>(content)[containerIdx] : nullptr;
                    }
                    template <size_t I>
                    auto get(unsigned int containerIdx) {
                        return std::get<I>(content)[containerIdx];
                    }
                    template <size_t I>
                    auto removeType() {
                        return details::remove_Nth<I>(*this);
                    }
                    template <typename T>
                    auto removeType() {
                        return details::remove_Nth<index<T, TupleTypes...>()>(*this);
                    }
                    template <typename T>
                    auto remove(T element) {
                        std::vector<T> elements = std::get<index<T, TupleTypes...>()>(content);
                        typename std::vector<T>::iterator it;
                        for (it = elements.begin(); it != elements.end(); it++) {
                            if (*it == &element) {
                                elements.erase(it);
                            } else {
                                it++;
                            }
                        }
                        if (std::get<index<T, TupleTypes...>()>(content).size() == 0) {
                            return removeType<T>();
                        }
                        return *this;
                    }
                };
                template <>
                struct DynamicTuple<> {
                    std::tuple<> content;
                    using types = typename std::tuple<>;
        
        
                    template <typename H>
                    DynamicTuple <H> add (H head) {
                        DynamicTuple<H> tuple;
                        tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                        return tuple.add(head);
                    }
                    template <typename H>
                    DynamicTuple <H> addType () {
                        DynamicTuple<H> tuple;
                        tuple.content = std::tuple_cat(content, std::make_tuple(std::vector<H>()));
                        return tuple;
                    }
                    template <typename T>
                    constexpr size_t vectorSize() {
                        return 0;
                    }
                    static constexpr size_t nbTypes() {
                        return std::tuple_size<types>::value;
                    }
                };
                namespace details {
                    //Return a tuple with elements at indexes.
                    template <typename T, size_t... Ints>
                    auto select_tuple(T& tuple, std::index_sequence<Ints...>)
                    {
                        DynamicTuple<std::tuple_element_t<Ints, typename T::types>...> newTuple;
                        newTuple.content = std::make_tuple(std::get<Ints>(tuple.content)...);
                        return newTuple;
                    }
        
                    //Remove the Nth elements of a tuple.
                    template<std::size_t N, typename T>
                    auto remove_Nth(T& tuple)
                    {
                      constexpr auto size = tuple.nbTypes();
                      using first = std::make_index_sequence<N>;
                      using rest = offset_sequence_t<N+1,
                                    std::make_index_sequence<size-N-1>>;
                      using indices = cat_sequence_t<first, rest>;
                      return select_tuple(tuple, indices{});
                    }
                }
            }
        }
        #endif

        cependant ce n'est pas là car l'erreur persiste.

        ||=== Build: Debug in ODFAEGECSDEMO (compiler: GNU GCC Compiler) ===|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Math/../Core/fastDelegate.h|871|warning: "/*" within comment [-Wcomment]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Graphics/entity.h|97|warning: "/*" within comment [-Wcomment]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/../Window/../Core/fastDelegate.h|871|warning: "/*" within comment [-Wcomment]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/entity.h|97|warning: "/*" within comment [-Wcomment]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Network/aes.h||In member function ‘void odfaeg::network::AES_ENC::Xor(char*, const char*)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Network/aes.h|180|warning: comparison of integer expressions of different signedness: ‘int’ and ‘const unsigned int’ [-Wsign-compare]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Network/network.h|191|warning: the compiler can assume that the address of ‘odfaeg::network::Network::cli’ will never be NULL [-Waddress]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Network/network.h|228|warning: the compiler can assume that the address of ‘odfaeg::network::Network::srv’ will never be NULL [-Waddress]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Physics/../Math/computer.h|418|warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Physics/../Math/computer.h|436|warning: comparison of integer expressions of different signedness: ‘unsigned int’ and ‘int’ [-Wsign-compare]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Window/iWindow.hpp||In member function ‘virtual const odfaeg::window::ContextSettings& odfaeg::window::IWindow::getSettings() const’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Window/iWindow.hpp|193|warning: returning reference to temporary [-Wreturn-local-addr]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h||In constructor ‘odfaeg::graphic::LightComponent::LightComponent(odfaeg::graphic::RenderWindow&, odfaeg::math::Vec3f, odfaeg::math::Vec3f, odfaeg::math::Vec3f, unsigned int, odfaeg::graphic::LightComponent*)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h|185|warning: ‘odfaeg::graphic::LightComponent::parent’ will be initialized after [-Wreorder]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h|184|warning:   ‘bool odfaeg::graphic::LightComponent::enableScissorTest’ [-Wreorder]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h|15|warning:   when initialized here [-Wreorder]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h||In member function ‘virtual void odfaeg::graphic::LightComponent::recomputeSize()’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h|26|warning: unused variable ‘sx’ [-Wunused-variable]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h|26|warning: unused variable ‘sy’ [-Wunused-variable]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h|26|warning: variable ‘ppx’ set but not used [-Wunused-but-set-variable]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../../../include/odfaeg/Graphics/lightComponent.h|26|warning: variable ‘ppy’ set but not used [-Wunused-but-set-variable]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp||In member function ‘odfaeg::graphic::ecs::EntityId odfaeg::graphic::ecs::ComponentMapping::getRoot(odfaeg::graphic::ecs::EntityId)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|164|warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|164|note: remove ‘std::move’ call|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp||In member function ‘std::vector<odfaeg::graphic::ecs::Cell*> odfaeg::graphic::ecs::Grid::getNeightbours(EntityComponentArray, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::EntityId, odfaeg::graphic::ecs::Cell*, bool)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|39|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|11|note: forward declaration of ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|40|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|11|note: forward declaration of ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|46|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|11|note: forward declaration of ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp||In member function ‘std::vector<odfaeg::math::Vec3f> odfaeg::graphic::ecs::Grid::getPath(EntityComponentArray, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::EntityId, odfaeg::math::Vec3f)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|82|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::TransformComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|12|note: forward declaration of ‘class odfaeg::graphic::ecs::TransformComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|82|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::TransformComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|12|note: forward declaration of ‘class odfaeg::graphic::ecs::TransformComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|82|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::TransformComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|12|note: forward declaration of ‘class odfaeg::graphic::ecs::TransformComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp||In member function ‘bool odfaeg::graphic::ecs::Grid::collideWithEntity(EntityComponentArray, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::EntityId, odfaeg::math::Vec3f)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|218|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|11|note: forward declaration of ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|219|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|11|note: forward declaration of ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|224|warning: invalid use of incomplete type ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/grid.hpp|11|note: forward declaration of ‘class odfaeg::graphic::ecs::ColliderComponent’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/systems.hpp||In member function ‘odfaeg::graphic::ecs::EntityId odfaeg::graphic::ecs::CloningSystem::operator()(std::tuple<_Tps ...>, odfaeg::graphic::ecs::EntityId, std::tuple<_UTypes ...>&)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/systems.hpp|153|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::collide(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId*)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|93|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::collide(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId*, odfaeg::math::Vec3f)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|101|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::collide(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId*, odfaeg::math::Ray)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|109|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> > odfaeg::graphic::ecs::World< <template-parameter-1-1> >::getRootEntities(SceneArray&, std::string)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|134|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> > odfaeg::graphic::ecs::World< <template-parameter-1-1> >::getChildrenEntities(SceneArray&, std::string)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|144|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘std::vector<odfaeg::math::Vec3f> odfaeg::graphic::ecs::World< <template-parameter-1-1> >::getPath(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId, odfaeg::math::Vec3f)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|148|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘std::vector<odfaeg::math::Vec3f> odfaeg::graphic::ecs::World< <template-parameter-1-1> >::getGridCaseAt(SceneArray&, EntityComponentArray&, odfaeg::math::Vec3f)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|152|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp||In member function ‘std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> > odfaeg::graphic::ecs::World< <template-parameter-1-1> >::getEntitiesInRect(SceneArray&, EntityComponentArray&, odfaeg::physic::BoundingBox, std::string)’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|272|warning: no return statement in function returning non-void [-Wreturn-type]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp||In instantiation of ‘void odfaeg::graphic::ecs::ComponentMapping::removeInVector(std::vector<_Ch_type>&, size_t) [with T = std::optional<long unsigned int>; size_t = long unsigned int]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|155|required from here|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|146|warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|144|warning: unused variable ‘i’ [-Wunused-variable]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp||In instantiation of ‘void odfaeg::graphic::ecs::ComponentMapping::removeInVector(std::vector<_Ch_type>&, size_t) [with T = long unsigned int; size_t = long unsigned int]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|156|required from here|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|146|warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|144|warning: unused variable ‘i’ [-Wunused-variable]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/modelFactory.hpp||In instantiation of ‘static auto odfaeg::graphic::ecs::ModelFactory::createPerPixelLinkedListBindlessRenderComponent(World&, Factory, odfaeg::graphic::ecs::EntityId, DynamicArray&, odfaeg::graphic::RenderWindow&, int, std::string) [with World = odfaeg::graphic::ecs::World<std::__cxx11::basic_string<char> >; DynamicArray = odfaeg::core::DynamicTuple<>; Factory = odfaeg::graphic::ecs::EntityFactory; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>; std::string = std::__cxx11::basic_string<char>]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|32|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/modelFactory.hpp|23|warning: variable ‘resolution’ set but not used [-Wunused-but-set-variable]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp||In instantiation of ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|304|warning: unused variable ‘level’ [-Wunused-variable]|
        /usr/include/c++/11/tuple||In instantiation of ‘struct std::tuple_element<18446744073709551614, std::tuple<> >’:|
        /usr/include/c++/11/tuple|1342|required from ‘struct std::tuple_element<18446744073709551615, std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > > >’|
        /usr/include/c++/11/utility|118|  required by substitution of ‘template<long unsigned int __i, class _Tp> using __tuple_element_t = typename std::tuple_element::type [with long unsigned int __i = 18446744073709551615; _Tp = std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >]’|
        /usr/include/c++/11/tuple|1398|  required by substitution of ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_UTypes ...> >&& std::get(const std::tuple<_UTypes ...>&&) [with long unsigned int __i = 18446744073709551615; _Elements = {std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > >}]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|required from ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::SceneGridComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::core::DynamicTuple<>}]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|257|  [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|307|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /usr/include/c++/11/tuple|1360|error: static assertion failed: tuple index is in range|
        /usr/include/c++/11/tuple|1360|note: ‘(18446744073709551614 < ((long unsigned int)std::integral_constant<long unsigned int, 0>::value))’ evaluates to false|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp||In instantiation of ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::SceneGridComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::core::DynamicTuple<>}]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|257|required from ‘T* odfaeg::graphic::ecs::ComponentMapping::getAgregate(DynamicTuple&, odfaeg::graphic::ecs::EntityId) [with T = odfaeg::graphic::ecs::SceneGridComponent; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|325|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply_impl(odfaeg::graphic::ecs::EntityId, DynamicTuple&, System&, std::tuple<Params ...>&, std::index_sequence<I ...>, std::vector<R>&) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; long unsigned int ...I = {0}; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool}; R = bool; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>; std::index_sequence<I ...> = std::integer_sequence<long unsigned int, 0>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|307|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: no matching function for call to ‘get<I>(std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >&)’|
        /usr/include/c++/11/utility|223|note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(std::pair<_Tp1, _Tp2>&)’|
        /usr/include/c++/11/utility|223|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘std::pair<_Tp1, _Tp2>’|
        /usr/include/c++/11/utility|228|note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(std::pair<_Tp1, _Tp2>&&)’|
        /usr/include/c++/11/utility|228|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘std::pair<_Tp1, _Tp2>’|
        /usr/include/c++/11/utility|233|note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(const std::pair<_Tp1, _Tp2>&)’|
        /usr/include/c++/11/utility|233|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘const std::pair<_Tp1, _Tp2>’|
        /usr/include/c++/11/utility|238|note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr const typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type&& std::get(const std::pair<_Tp1, _Tp2>&&)’|
        /usr/include/c++/11/utility|238|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘const std::pair<_Tp1, _Tp2>’|
        /usr/include/c++/11/utility|247|note: candidate: ‘template<class _Tp, class _Up> constexpr _Tp& std::get(std::pair<_T1, _T2>&)’|
        /usr/include/c++/11/utility|247|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr _Tp& std::get(std::pair<_T1, _T2>&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/utility|252|note: candidate: ‘template<class _Tp, class _Up> constexpr const _Tp& std::get(const std::pair<_T1, _T2>&)’|
        /usr/include/c++/11/utility|252|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr const _Tp& std::get(const std::pair<_T1, _T2>&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/utility|257|note: candidate: ‘template<class _Tp, class _Up> constexpr _Tp&& std::get(std::pair<_T1, _T2>&&)’|
        /usr/include/c++/11/utility|257|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr _Tp&& std::get(std::pair<_T1, _T2>&&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/utility|262|note: candidate: ‘template<class _Tp, class _Up> constexpr const _Tp&& std::get(const std::pair<_T1, _T2>&&)’|
        /usr/include/c++/11/utility|262|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr const _Tp&& std::get(const std::pair<_T1, _T2>&&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/utility|267|note: candidate: ‘template<class _Tp, class _Up> constexpr _Tp& std::get(std::pair<_Up, _Tp>&)’|
        /usr/include/c++/11/utility|267|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr _Tp& std::get(std::pair<_Up, _Tp>&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/utility|272|note: candidate: ‘template<class _Tp, class _Up> constexpr const _Tp& std::get(const std::pair<_Up, _Tp>&)’|
        /usr/include/c++/11/utility|272|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr const _Tp& std::get(const std::pair<_Up, _Tp>&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/utility|277|note: candidate: ‘template<class _Tp, class _Up> constexpr _Tp&& std::get(std::pair<_Up, _Tp>&&)’|
        /usr/include/c++/11/utility|277|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr _Tp&& std::get(std::pair<_Up, _Tp>&&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/utility|282|note: candidate: ‘template<class _Tp, class _Up> constexpr const _Tp&& std::get(const std::pair<_Up, _Tp>&&)’|
        /usr/include/c++/11/utility|282|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Up> constexpr const _Tp&& std::get(const std::pair<_Up, _Tp>&&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/array|361|note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp& std::get(std::array<_Tp, _Nm>&)’|
        /usr/include/c++/11/array|361|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘std::array<_Tp, _Nm>’|
        /usr/include/c++/11/array|369|note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr _Tp&& std::get(std::array<_Tp, _Nm>&&)’|
        /usr/include/c++/11/array|369|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘std::array<_Tp, _Nm>’|
        /usr/include/c++/11/array|377|note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp& std::get(const std::array<_Tp, _Nm>&)’|
        /usr/include/c++/11/array|377|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘const std::array<_Tp, _Nm>’|
        /usr/include/c++/11/array|385|note: candidate: ‘template<long unsigned int _Int, class _Tp, long unsigned int _Nm> constexpr const _Tp&& std::get(const std::array<_Tp, _Nm>&&)’|
        /usr/include/c++/11/array|385|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘const std::array<_Tp, _Nm>’|
        /usr/include/c++/11/tuple|1377|note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_UTypes ...> >& std::get(std::tuple<_UTypes ...>&)’|
        /usr/include/c++/11/tuple|1377|note:   template argument deduction/substitution failed:|
        /usr/include/c++/11/tuple|1377|  required by substitution of ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_UTypes ...> >& std::get(std::tuple<_UTypes ...>&) [with long unsigned int __i = 18446744073709551615; _Elements = {std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > >}]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|required from ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::SceneGridComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::core::DynamicTuple<>}]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|257|required from ‘T* odfaeg::graphic::ecs::ComponentMapping::getAgregate(DynamicTuple&, odfaeg::graphic::ecs::EntityId) [with T = odfaeg::graphic::ecs::SceneGridComponent; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|325|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply_impl(odfaeg::graphic::ecs::EntityId, DynamicTuple&, System&, std::tuple<Params ...>&, std::index_sequence<I ...>, std::vector<R>&) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; long unsigned int ...I = {0}; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool}; R = bool; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>; std::index_sequence<I ...> = std::integer_sequence<long unsigned int, 0>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|307|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /usr/include/c++/11/utility|118|error: no type named ‘type’ in ‘struct std::tuple_element<18446744073709551615, std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > > >’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp||In instantiation of ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::SceneGridComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::core::DynamicTuple<>}]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|257|required from ‘T* odfaeg::graphic::ecs::ComponentMapping::getAgregate(DynamicTuple&, odfaeg::graphic::ecs::EntityId) [with T = odfaeg::graphic::ecs::SceneGridComponent; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|325|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply_impl(odfaeg::graphic::ecs::EntityId, DynamicTuple&, System&, std::tuple<Params ...>&, std::index_sequence<I ...>, std::vector<R>&) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; long unsigned int ...I = {0}; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool}; R = bool; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>; std::index_sequence<I ...> = std::integer_sequence<long unsigned int, 0>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|307|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /usr/include/c++/11/tuple|1383|note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_UTypes ...> >& std::get(const std::tuple<_UTypes ...>&)’|
        /usr/include/c++/11/tuple|1383|note:   template argument deduction/substitution failed:|
        /usr/include/c++/11/tuple|1389|note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_UTypes ...> >&& std::get(std::tuple<_UTypes ...>&&)’|
        /usr/include/c++/11/tuple|1389|note:   template argument deduction/substitution failed:|
        /usr/include/c++/11/tuple|1398|note: candidate: ‘template<long unsigned int __i, class ... _Elements> constexpr std::__tuple_element_t<__i, std::tuple<_UTypes ...> >&& std::get(const std::tuple<_UTypes ...>&&)’|
        /usr/include/c++/11/tuple|1398|note:   substitution of deduced template arguments resulted in errors seen above|
        /usr/include/c++/11/tuple|1421|note: candidate: ‘template<class _Tp, class ... _Types> constexpr _Tp& std::get(std::tuple<_UTypes ...>&)’|
        /usr/include/c++/11/tuple|1421|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class ... _Types> constexpr _Tp& std::get(std::tuple<_UTypes ...>&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/tuple|1427|note: candidate: ‘template<class _Tp, class ... _Types> constexpr _Tp&& std::get(std::tuple<_UTypes ...>&&)’|
        /usr/include/c++/11/tuple|1427|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class ... _Types> constexpr _Tp&& std::get(std::tuple<_UTypes ...>&&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/tuple|1433|note: candidate: ‘template<class _Tp, class ... _Types> constexpr const _Tp& std::get(const std::tuple<_UTypes ...>&)’|
        /usr/include/c++/11/tuple|1433|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class ... _Types> constexpr const _Tp& std::get(const std::tuple<_UTypes ...>&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /usr/include/c++/11/tuple|1440|note: candidate: ‘template<class _Tp, class ... _Types> constexpr const _Tp&& std::get(const std::tuple<_UTypes ...>&&)’|
        /usr/include/c++/11/tuple|1440|note:   template argument deduction/substitution failed:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class ... _Types> constexpr const _Tp&& std::get(const std::tuple<_UTypes ...>&&)’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|note:   expected a type, got ‘I’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp||In instantiation of ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::TransformComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent}]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|257|required from ‘T* odfaeg::graphic::ecs::ComponentMapping::getAgregate(DynamicTuple&, odfaeg::graphic::ecs::EntityId) [with T = odfaeg::graphic::ecs::TransformComponent; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/systems.hpp|569|required from ‘bool odfaeg::graphic::ecs::AddEntityToSceneSystem::operator()(std::tuple<_Tps ...>, odfaeg::graphic::ecs::EntityId, T&) [with Components = {odfaeg::graphic::ecs::SceneGridComponent*}; T = std::tuple<odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool>; <template-parameter-1-3> = void; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|326|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply_impl(odfaeg::graphic::ecs::EntityId, DynamicTuple&, System&, std::tuple<Params ...>&, std::index_sequence<I ...>, std::vector<R>&) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; long unsigned int ...I = {0}; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool}; R = bool; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>; std::index_sequence<I ...> = std::integer_sequence<long unsigned int, 0>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|307|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|error: cannot convert ‘__gnu_cxx::__alloc_traits<std::allocator<odfaeg::graphic::ecs::ClonableComponent>, odfaeg::graphic::ecs::ClonableComponent>::value_type*’ {aka ‘odfaeg::graphic::ecs::ClonableComponent*’} to ‘odfaeg::graphic::ecs::TransformComponent*’ in return|
        /usr/include/c++/11/tuple||In instantiation of ‘constexpr _Tp& std::get(std::tuple<_UTypes ...>&) [with _Tp = std::vector<odfaeg::graphic::ecs::SceneGridComponent, std::allocator<odfaeg::graphic::ecs::SceneGridComponent> >; _Types = {std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > >}]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|37|required from ‘constexpr size_t odfaeg::core::DynamicTuple<TupleTypes>::vectorSize() [with T = odfaeg::graphic::ecs::SceneGridComponent; TupleTypes = {odfaeg::core::DynamicTuple<>}; size_t = long unsigned int]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|required from ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::SceneGridComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::core::DynamicTuple<>}]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|257|required from ‘T* odfaeg::graphic::ecs::ComponentMapping::getAgregate(DynamicTuple&, odfaeg::graphic::ecs::EntityId) [with T = odfaeg::graphic::ecs::SceneGridComponent; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|325|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply_impl(odfaeg::graphic::ecs::EntityId, DynamicTuple&, System&, std::tuple<Params ...>&, std::index_sequence<I ...>, std::vector<R>&) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; long unsigned int ...I = {0}; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool}; R = bool; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>; std::index_sequence<I ...> = std::integer_sequence<long unsigned int, 0>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|307|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /usr/include/c++/11/tuple|1422|error: no matching function for call to ‘__get_helper2<std::vector<odfaeg::graphic::ecs::SceneGridComponent, std::allocator<odfaeg::graphic::ecs::SceneGridComponent> > >(std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >&)’|
        /usr/include/c++/11/tuple|1410|note: candidate: ‘template<class _Head, long unsigned int __i, class ... _Tail> constexpr _Head& std::__get_helper2(std::_Tuple_impl<__i, _Head, _Tail ...>&)’|
        /usr/include/c++/11/tuple|1410|note:   template argument deduction/substitution failed:|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::SceneGridComponent’ and ‘odfaeg::core::DynamicTuple<>’|
        /usr/include/c++/11/tuple|1422|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘std::_Tuple_impl<__i, std::vector<odfaeg::graphic::ecs::SceneGridComponent, std::allocator<odfaeg::graphic::ecs::SceneGridComponent> >, _Tail ...>’|
        /usr/include/c++/11/tuple|1415|note: candidate: ‘template<class _Head, long unsigned int __i, class ... _Tail> constexpr const _Head& std::__get_helper2(const std::_Tuple_impl<__i, _Head, _Tail ...>&)’|
        /usr/include/c++/11/tuple|1415|note:   template argument deduction/substitution failed:|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::SceneGridComponent’ and ‘odfaeg::core::DynamicTuple<>’|
        /usr/include/c++/11/tuple|1422|note:   ‘std::tuple<std::vector<odfaeg::core::DynamicTuple<>, std::allocator<odfaeg::core::DynamicTuple<> > > >’ is not derived from ‘const std::_Tuple_impl<__i, std::vector<odfaeg::graphic::ecs::SceneGridComponent, std::allocator<odfaeg::graphic::ecs::SceneGridComponent> >, _Tail ...>’|
        /usr/include/c++/11/tuple||In instantiation of ‘constexpr _Tp& std::get(std::tuple<_UTypes ...>&) [with _Tp = std::vector<odfaeg::graphic::ecs::TransformComponent, std::allocator<odfaeg::graphic::ecs::TransformComponent> >; _Types = {std::vector<odfaeg::graphic::ecs::MeshComponent, std::allocator<odfaeg::graphic::ecs::MeshComponent> >, std::vector<odfaeg::graphic::ecs::ClonableComponent, std::allocator<odfaeg::graphic::ecs::ClonableComponent> >, std::vector<odfaeg::graphic::ecs::EntityInfoComponent, std::allocator<odfaeg::graphic::ecs::EntityInfoComponent> >}]’:|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|37|required from ‘constexpr size_t odfaeg::core::DynamicTuple<TupleTypes>::vectorSize() [with T = odfaeg::graphic::ecs::TransformComponent; TupleTypes = {odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent}; size_t = long unsigned int]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Core/dynamicTuple.hpp|49|required from ‘T* odfaeg::core::DynamicTuple<TupleTypes>::get(unsigned int) [with T = odfaeg::graphic::ecs::TransformComponent; D = {}; <template-parameter-2-3> = void; TupleTypes = {odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent}]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|257|required from ‘T* odfaeg::graphic::ecs::ComponentMapping::getAgregate(DynamicTuple&, odfaeg::graphic::ecs::EntityId) [with T = odfaeg::graphic::ecs::TransformComponent; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/systems.hpp|569|required from ‘bool odfaeg::graphic::ecs::AddEntityToSceneSystem::operator()(std::tuple<_Tps ...>, odfaeg::graphic::ecs::EntityId, T&) [with Components = {odfaeg::graphic::ecs::SceneGridComponent*}; T = std::tuple<odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool>; <template-parameter-1-3> = void; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|326|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply_impl(odfaeg::graphic::ecs::EntityId, DynamicTuple&, System&, std::tuple<Params ...>&, std::index_sequence<I ...>, std::vector<R>&) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; long unsigned int ...I = {0}; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>*, bool}; R = bool; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>; std::index_sequence<I ...> = std::integer_sequence<long unsigned int, 0>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/../../Core/ecs.hpp|307|required from ‘void odfaeg::graphic::ecs::ComponentMapping::apply(DynamicTuple&, System&, std::vector<odfaeg::graphic::ecs::atomwrapper<long unsigned int*> >&, std::tuple<Params ...>&, std::vector<R>&, bool) [with Signature = {odfaeg::graphic::ecs::SceneGridComponent}; DynamicTuple = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; System = odfaeg::graphic::ecs::AddEntityToSceneSystem; Params = {odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>, odfaeg::graphic::ecs::ComponentMapping, odfaeg::graphic::ecs::atomwrapper<long unsigned int*>}; R = bool]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/world.hpp|37|required from ‘bool odfaeg::graphic::ecs::World< <template-parameter-1-1> >::addEntity(SceneArray&, EntityComponentArray&, odfaeg::graphic::ecs::EntityId) [with SceneType = odfaeg::graphic::ecs::SceneGridComponent; SceneArray = odfaeg::core::DynamicTuple<odfaeg::core::DynamicTuple<> >; EntityComponentArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MeshComponent, odfaeg::graphic::ecs::ClonableComponent, odfaeg::graphic::ecs::EntityInfoComponent>; SceneAlias = std::__cxx11::basic_string<char>; odfaeg::graphic::ecs::EntityId = odfaeg::graphic::ecs::atomwrapper<long unsigned int*>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/ecsapplication.hpp|34|required from ‘void sorrok::MyECSAppli::onInit(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<odfaeg::graphic::ecs::MainSystem, odfaeg::graphic::ecs::FrustrumCullingSystem, odfaeg::graphic::ecs::PerPixelLinkedListRenderSystem>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|147|required from ‘void odfaeg::graphic::ecs::Application<D, Alias>::init(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/../../ODFAEG/include/odfaeg/Graphics/ECS/application.hpp|103|required from ‘int odfaeg::graphic::ecs::Application<D, Alias>::exec(SystemArray&, SceneArray&, RendererArray&, EntityComponentArray&) [with SystemArray = odfaeg::core::DynamicTuple<>; SceneArray = odfaeg::core::DynamicTuple<>; RendererArray = odfaeg::core::DynamicTuple<>; EntityComponentArray = odfaeg::core::DynamicTuple<>; D = sorrok::MyECSAppli; Alias = std::__cxx11::basic_string<char>]’|
        /home/laurent/gitODFAEG/Demos/ODFAEGECSDemo/main.cpp|11|required from here|
        /usr/include/c++/11/tuple|1422|error: no matching function for call to ‘__get_helper2<std::vector<odfaeg::graphic::ecs::TransformComponent, std::allocator<odfaeg::graphic::ecs::TransformComponent> > >(std::tuple<std::vector<odfaeg::graphic::ecs::MeshComponent, std::allocator<odfaeg::graphic::ecs::MeshComponent> >, std::vector<odfaeg::graphic::ecs::ClonableComponent, std::allocator<odfaeg::graphic::ecs::ClonableComponent> >, std::vector<odfaeg::graphic::ecs::EntityInfoComponent, std::allocator<odfaeg::graphic::ecs::EntityInfoComponent> > >&)’|
        /usr/include/c++/11/tuple|1410|note: candidate: ‘template<class _Head, long unsigned int __i, class ... _Tail> constexpr _Head& std::__get_helper2(std::_Tuple_impl<__i, _Head, _Tail ...>&)’|
        /usr/include/c++/11/tuple|1410|note:   template argument deduction/substitution failed:|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::TransformComponent’ and ‘odfaeg::graphic::ecs::MeshComponent’|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::TransformComponent’ and ‘odfaeg::graphic::ecs::ClonableComponent’|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::TransformComponent’ and ‘odfaeg::graphic::ecs::EntityInfoComponent’|
        /usr/include/c++/11/tuple|1422|note:   ‘std::tuple<std::vector<odfaeg::graphic::ecs::MeshComponent, std::allocator<odfaeg::graphic::ecs::MeshComponent> >, std::vector<odfaeg::graphic::ecs::ClonableComponent, std::allocator<odfaeg::graphic::ecs::ClonableComponent> >, std::vector<odfaeg::graphic::ecs::EntityInfoComponent, std::allocator<odfaeg::graphic::ecs::EntityInfoComponent> > >’ is not derived from ‘std::_Tuple_impl<__i, std::vector<odfaeg::graphic::ecs::TransformComponent, std::allocator<odfaeg::graphic::ecs::TransformComponent> >, _Tail ...>’|
        /usr/include/c++/11/tuple|1415|note: candidate: ‘template<class _Head, long unsigned int __i, class ... _Tail> constexpr const _Head& std::__get_helper2(const std::_Tuple_impl<__i, _Head, _Tail ...>&)’|
        /usr/include/c++/11/tuple|1415|note:   template argument deduction/substitution failed:|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::TransformComponent’ and ‘odfaeg::graphic::ecs::MeshComponent’|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::TransformComponent’ and ‘odfaeg::graphic::ecs::ClonableComponent’|
        /usr/include/c++/11/tuple|1422|note:   mismatched types ‘odfaeg::graphic::ecs::TransformComponent’ and ‘odfaeg::graphic::ecs::EntityInfoComponent’|
        /usr/include/c++/11/tuple|1422|note:   ‘std::tuple<std::vector<odfaeg::graphic::ecs::MeshComponent, std::allocator<odfaeg::graphic::ecs::MeshComponent> >, std::vector<odfaeg::graphic::ecs::ClonableComponent, std::allocator<odfaeg::graphic::ecs::ClonableComponent> >, std::vector<odfaeg::graphic::ecs::EntityInfoComponent, std::allocator<odfaeg::graphic::ecs::EntityInfoComponent> > >’ is not derived from ‘const std::_Tuple_impl<__i, std::vector<odfaeg::graphic::ecs::TransformComponent, std::allocator<odfaeg::graphic::ecs::TransformComponent> >, _Tail ...>’|
        ||=== Build failed: 22 error(s), 126 warning(s) (0 minute(s), 2 second(s)) ===|
        

        voici les fonctions ou ça plante :

        template <typename SceneType, typename SceneArray, typename EntityComponentArray>
                        bool addEntity(SceneArray& sceneArray, EntityComponentArray& entityComponentArray, EntityId entity) {
                            auto params = std::make_tuple(entityComponentArray, entityComponentMapping, entity);
                            std::vector<bool> addeds;
                            std::vector<EntityId> scenesIDs(1);
                            scenesIDs[0] = currentSceneId;
                            AddEntityToSceneSystem system;
                            sceneMapping.apply<SceneType>(sceneArray, system, scenesIDs, params, addeds);
                            for(unsigned int i = 0; i < addeds.size(); i++)
                                if (!addeds[i])
                                    return false;
                            return true;
                        }
        template <typename... Signature, typename DynamicTuple, typename System, typename... Params, class R>
                        void apply(DynamicTuple& tuple, System& system, std::vector<EntityId>& entities, std::tuple<Params...>& params, std::vector<R>& ret, bool reverse=false) {
                          EntityId* tmpRootEntityId;
                          EntityId* tmpParentEntityId;
                          EntityId* tmpClonedParentEntityId;
                          bool first  = true;
                          auto additionnal_params = std::make_tuple(tmpClonedParentEntityId, tmpRootEntityId, tmpParentEntityId, first);
                          auto cated_params = std::tuple_cat(params, additionnal_params);
                          if (reverse) {
                              for (unsigned int i = 0; i < entities.size(); i++) {
                                size_t level = (treeLevels[*entities[i].get().load()].has_value()) ? treeLevels[*entities[i].get().load()].value() : 0;
                                for (unsigned int j = nbLevels[*entities[i].get().load()]; j > 0; j--) {
                                  for(unsigned int k = 0; k < childrenMapping[*entities[i].get().load()][j-1].size(); k++) {
                                    this->template apply_impl<Signature...>(childrenMapping[*entities[i].get().load()][j-1][k], tuple, system, cated_params, std::index_sequence_for<Signature...>(), ret);
                                  }
                                }
                                this->template apply_impl<Signature...>(entities[i], tuple, system, cated_params, std::index_sequence_for<Signature...>());
                              }
                          } else {
                              for (unsigned int i = 0; i < entities.size(); i++) {
                                this->template apply_impl<Signature...>(entities[i], tuple, system, cated_params, std::index_sequence_for<Signature...>(), ret);
                                size_t level = (treeLevels[*entities[i].get().load()].has_value()) ? treeLevels[*entities[i].get().load()].value() : 0;
                                for (unsigned int j = level; j < nbLevels[*entities[i].get().load()]; j++) {
                                  for(unsigned int k = 0; k < childrenMapping[*getRoot(entities[i]).get().load()][j].size(); k++)
                                    this->template apply_impl<Signature...>(childrenMapping[*getRoot(entities[i]).get().load()][j][k], tuple, system, cated_params, std::index_sequence_for<Signature...>(), ret);
                                }
                              }
                          }
                        }

        Il semblerait que le tuple soit vide malgré que je rajoute des éléments dedans pourquoi ?

        Merci




        -
        Edité par OmbreNoire 4 août 2022 à 19:00:31

        • Partager sur Facebook
        • Partager sur Twitter
          5 août 2022 à 10:05:12

          As tu déjà essayé de vérifier les différents avertissements émis par ton compilateur?  C'est pour le moins effarant!

          Certains (comme la présence d'un /* dans un autre commentaire) ne vont sans doute pas avoir énormément de conséquences. Pour d'autres, par contre...

          • comparer un entier signé avec un entier non signé, ce n'est jamais vraiment la meilleure idée qui soit
          • le fait que le compilateur t'indique qu'il risque de considérer qu'une donnée (odfaeg::network::Network::cli ou odfaeg::network::Network::srv) est pour le moins suspect
          • le fait de renvoyer une référence sur une donnée temporaire, c'est carrément suicidaire
          • quand il te signal qu'utiliser le déplacement lors du renvoi de donnée peut interférer avec l'élision de copie et que tu devrais donc supprimer le std::move, tu devrais l'écouter
          • Quand il se plaint de devoir travailler avec un type de donnée incomplet, il faudrait sans doute l'écouter et essayer d'y remédier
          • quand il te dit qu'une fonction censée renvoyer quelque chose ne renvoie rien, il est également suicidaire de ne pas y apporter de correction
          • Les variables définies mais jamais utilisées ne sont sans doute pas particulièrement graves, cependant, pourquoi les définir si c'est pour qu'elles ne soient pas utilisées?
          • Es tu sur que la priorité respectée dans ton mélange de && et de || fera que les tests donnent le résultat que tu espère?

          Peut-être serais tu bien inspiré, avant même d'envisager d'aller plus loin, de résoudre les problèmes exposés par ces avertissements, pourrait éviter bien des problèmes pour la suite ;)

          Pour le reste, as tu conscience que tes pointeurs tmpRootEntityId tmpParentEntityId et tmpCloneParentEntityId ne sont jamais initialisés dans ta fonction apply, et que, par conséquence, ta tuple additionnal_params contient des pointeurs qui ne pointent sur ... rien de cohérent?

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            14 août 2022 à 13:26:49

            Ha bah j'ai trouvé je m'étais trompé ici.

            template <typename SceneArray, typename SceneComponent, typename Factory>
                            auto addSceneFlag(SceneArray& scenes,  EntityId& sceneId, SceneComponent scene, Factory& factory) {
                                auto newScenes = sceneMapping.addFlag(sceneId, scenes, scene, factory);
                                this->scenesIds.push_back(sceneId);
                                return newScenes;
                            }

            Maintenant ça compile! :)

            • Partager sur Facebook
            • Partager sur Twitter

            erreur en compilation

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown