[WIP] Experimental C++14 multithreaded compile-time entity-component-system library.

Overview

ecst

Experimental & work-in-progress C++14 multithreaded compile-time Entity-Component-System header-only library.

stability license gratipay badge.cpp

Overview

Successful development of complex real-time applications and games requires a flexible and efficient entity management system. As a project becomes more intricate, it’s critical to find an elegant way to compose objects in order to prevent code repetition, improve modularity and open up powerful optimization possibilities.

The Entity-Component-System architectural pattern was designed to achieve the aforementioned benefits, by separating data from logic.

  • Entities can be composed of small, reusable, and generic components.

  • Components can be stored in contiguous memory areas, thus improving data locality and cache- friendliness.

  • Application logic can be easily parallelized and abstracted away from the objects themselves and their storage policies.

  • The state of the application can be serialized and shared over the network with less effort.

  • A more modular, generic and easily-testable codebase.

"ecst" was developed as my BCS graduation project.


Getting started


More information


Terminology

  • Entities: defined by Adam Martin (see thesis) as “fundamental conceptual building blocks” of a system, which represent concrete application ob-jects. They have no application-specific data or logic.

  • Components: small, reusable, types that compose entities. Again, citing Adam Martin in (see thesis), a component type “labels an entity as possess-ing a particular aspect”. Components store data but do not contain any logic.

  • Systems: providers of implementation logic for entities possessing a specific set of component types.

  • Outer parallelism: term used in ECST which defines the concept of running multiple systems that do not depend on each other in parallel. Its implementation details will be analyzed in Chapter 10 (see thesis). Conceptually, an implicit directed acyclic graph is created at compile-time thanks to the knowledge of system dependencies. The execution of the implicit DAG is handled by a system scheduler type specified during settings definition.

  • Inner parallelism: other that running separate systems in parallel, ECST supports splitting a single system into multiple sub-tasks, which can be executed on separate threads. Many systems, such as the ones that represent functionally pure com- putations, do not contain side-effects that modify their own state or that define interactions between the subscribed entities: these are prime examples of “embarrassingly parallel” computations.


FAQ

  • "Where can I find documentation for the API?"

  • "Can we have components that aren't default constructible?"

    • This has come up before in the past. The answer is no - see issue #8.
  • "I'm trying to read/write to/from my component, but I'm getting a compilation error. What is happening?"

    • Systems need to know at compile-time which component types they will access and how (read-only or write access). This has to be specified when defining system signatures. See issue #4 for more info.
  • "Is it possible to iterate over the components attached to entities, without being inside of a system's process function?"

  • "How do control whether my system runs in parallel, or as a single thread?"

    • Context-wide inner parallelism must be enabled by calling allow_inner_parallelism() in order to allow systems to be split in multiple sub-tasks. Inner parallelism strategies can be customized and composed at compile-time for particular systems, during system signature definition.
  • "What is the difference between making my system single-threaded vs disabling inner paralellism?"

    • Disabling inner parallelism prevents all systems to be split in multiple sub-tasks, regardless of their inner parallelism strategy. Making a system single-threaded prevents only that system from being split in multiple sub-tasks: this may be necessary for systems that maintain data-structures or that rely on iterating over all entities in the same thread.
Comments
  • ECST does not compile (gcc or clang) on Windows, issue is either with boost::hana or ECST itself.

    ECST does not compile (gcc or clang) on Windows, issue is either with boost::hana or ECST itself.

    After a lot of struggling I managed to figure out how to build ecst on Windows using MinGW. I've build the header library but I don't see any .dll or similar file that I could include in my project.

    I'm trying to compile into a format I can just use with Visual Studio, since my main project is already setup in there and I don't want to have to rewrite all my platform specific code to work with MinGW. I know you can't compile ecst with VC, but can I compile it with MinGW into a dll or whatever then use it in a Visual Studio project?

    I'm very new to CMake etc... so maybe I'm missing something embarrassingly obvious. I'm a mathematician (not a computer scientist) so I'm not 100% up to date with all this (I assume really useful) technology. So I guess what I'm asking is, is there any way I can compile ecst and then use it in another project or do I have to compile ecst with my project each time (and thus forcing me to not use Visual Studio)?

    I'm so confused, every other header-only library I have used is just a .dll, a .lib and a bunch of header files. When I generate with MinGW I don't get any of these things. Just a file named "a.exe" that doesn't appear to do anything. Note that I commented out the examples on the makefile as I don't have SFML installed (I'm use SDL). Reading my post through, I think I must be missing something obvious - apologies if this post is a waste of everyone's time.

    Thanks!

    opened by anonanon17 8
  • Components without default constructors

    Components without default constructors

    Hi, I have another question!

    How hard do you think it would be to make it so I can have components that don't have default constructors?

    I'd like to be able to pass arguments to the proxy's add_component() method, that would then be forwarded to the components constructor.

    For example, I have a triangle class that is immutable after construction: https://github.com/bjadamson/BoomHS/blob/release/include/engine/gfx/shapes.hpp#L44-L46

    But it would be a perfect component, because I can call a function to generate these on demand. Is this possible with the library as is?

    opened by bjadamson 5
  • question: read/write same component from system

    question: read/write same component from system

    Hey, hope things are going well. I have a simple question, is it possible to read/write the same component type from a system?

    I'm getting the following compilation error:

    home/benjamin/github/BoomHS/external/ecst/include/ecst/signature/./system/./data.hpp:80:13: error: static_assert failed "decltype(!mp::list::any_common_element( s_read_ctag_list(), s_write_ctag_list())){}" ECST_S_ASSERT_DT(!mp::list::any_common_element( // . ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/benjamin/github/BoomHS/external/ecst/include/./ecst/./aliases/assert.hpp:27:31: note: expanded from macro 'ECST_S_ASSERT_DT' #define ECST_S_ASSERT_DT(...) ECST_S_ASSERT(decltype(VA_ARGS){}) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/benjamin/github/BoomHS/external/ecst/include/./ecst/./aliases/assert.hpp:20:28: note: expanded from macro 'ECST_S_ASSERT' #define ECST_S_ASSERT(...) VRM_CORE_STATIC_ASSERT_NM(VA_ARGS) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/benjamin/github/BoomHS/external/ecst/extlibs/vrm_core/include/vrm/core/assert/static_assert_macros.hpp:17:40: note: expanded from macro 'VRM_CORE_STATIC_ASSERT_NM' #define VRM_CORE_STATIC_ASSERT_NM(...) static_assert(VA_ARGS, VRM_PP_TOSTR(VA_ARGS)) ^ ~~~~~~~~~~~ /home/benjamin/github/BoomHS/external/ecst/include/ecst/signature/./system/./data.hpp:56:24: note: in instantiation of template class 'ecst::signature::system::impl::data<ecst::tag::system::impl::tag_impl<s::randompos_system>, ecst::mp::option_map::impl::data<boost::hana::map<boost::hana::detail::hash_table<boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 0>, 0>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 1>, 1>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 2>, 2>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 3>, 3>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 4>, 4> >, boost::hana::basic_tuple<boost::hana::pair<std::__1::integral_constant<unsigned long, 0>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, true> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 1>, boost::hana::pair<boost::hana::basic_tuple<>, boost::hana::integral_constant<bool, false> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 2>, boost::hana::pair<boost::hana::basic_tuple<ecst::tag::component::impl::tag_implgame::world_coordinate >, boost::hana::integral_constant<bool, true> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 3>, boost::hana::pair<boost::hana::basic_tuple<ecst::tag::component::impl::tag_implgame::world_coordinate >, boost::hana::integral_constant<bool, true> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 4>, boost::hana::pair<ecst::signature::system::impl::output_implecst::signature::system::impl::empty_output_type, boost::hana::integral_constant<bool, false> > > > > > >' requested here return data<TTag, ECST_DECAY_DECLTYPE(new_options)>{}; ^ /home/benjamin/github/BoomHS/external/ecst/include/ecst/signature/./system/./data.hpp:120:24: note: in instantiation of function template specialization 'ecst::signature::system::impl::data<ecst::tag::system::impl::tag_impl<s::randompos_system>, ecst::mp::option_map::impl::data<boost::hana::map<boost::hana::detail::hash_table<boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 0>, 0>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 1>, 1>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 2>, 2>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 3>, 3>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 4>, 4> >, boost::hana::basic_tuple<boost::hana::pair<std::__1::integral_constant<unsigned long, 0>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, true> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 1>, boost::hana::pair<boost::hana::basic_tuple<>, boost::hana::integral_constant<bool, false> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 2>, boost::hana::pair<boost::hana::basic_tuple<ecst::tag::component::impl::tag_implgame::world_coordinate >, boost::hana::integral_constant<bool, true> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 3>, boost::hana::pair<boost::hana::basic_tuple<>, boost::hana::integral_constant<bool, false> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 4>, boost::hana::pair<ecst::signature::system::impl::output_implecst::signature::system::impl::empty_output_type, boost::hana::integral_constant<bool, false> > > > > > >::change_self<std::__1::integral_constant<unsigned long, 3>, boost::hana::basic_tuple<ecst::tag::component::impl::tag_implgame::world_coordinate > >' requested here return change_self( ^ /home/benjamin/github/BoomHS/include/game/boomhs/ecst_systems.hpp:36:6: note: in instantiation of function template specialization 'ecst::signature::system::impl::data<ecst::tag::system::impl::tag_impl<s::randompos_system>, ecst::mp::option_map::impl::data<boost::hana::map<boost::hana::detail::hash_table<boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 0>, 0>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 1>, 1>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 2>, 2>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 3>, 3>, boost::hana::detail::bucket<boost::hana::integral_constant<unsigned long long, 4>, 4> >, boost::hana::basic_tuple<boost::hana::pair<std::__1::integral_constant<unsigned long, 0>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, true> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 1>, boost::hana::pair<boost::hana::basic_tuple<>, boost::hana::integral_constant<bool, false> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 2>, boost::hana::pair<boost::hana::basic_tuple<ecst::tag::component::impl::tag_implgame::world_coordinate >, boost::hana::integral_constant<bool, true> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 3>, boost::hana::pair<boost::hana::basic_tuple<>, boost::hana::integral_constant<bool, false> > >, boost::hana::pair<std::__1::integral_constant<unsigned long, 4>, boost::hana::pair<ecst::signature::system::impl::output_implecst::signature::system::impl::empty_output_type, boost::hana::integral_constant<bool, false> > > > > > >::write<ecst::tag::component::impl::tag_implgame::world_coordinate >' requested here .write(ct::world_coordinate);){}"

    I boiled the error down to this minimal change: https://github.com/bjadamson/BoomHS/commit/d36fc8b69bb59ba2a0e80316baa7af39adf1225d

    I'm not sure if I'm interpreting this error message correctly, but am I allowed to read/write the same values from within a system?

    set method: https://github.com/bjadamson/BoomHS/blob/release/include/game/data_types.hpp#L68

    opened by bjadamson 4
  • Problem compiling ecst

    Problem compiling ecst

    Hello,

    I tried to compile ecst but I get an error.

    I am using gcc 6.3.0 on Linux ubuntu 16.04. I built boost hana library form sources. I tried simple example of code using hana and it worked.

    Does any one have any idea of what might be wrong?

    Does anyone has a similar environment of mine and was able to build ecst correctly?

    Thank you very much in advance for your help.

    Best regards,

    PS: Below is trace of the compiling error

    [ 16%] Building CXX object CMakeFiles/particles.dir/example/particles.cpp.o In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp: In instantiation of ‘constexpr boost::hana::pair<First, Second>::pair(boost::hana::pair<T, U>&&) [with T = std::integral_constant<long unsigned int, 0ul>; U = boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> >; = void; First = std::integral_constant<long unsigned int, 0ul>; Second = boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> >]’: /usr/local/include/boost/hana/fwd/core/make.hpp:61:64: required from ‘constexpr decltype(auto) boost::hana::make_t::operator()(X&& ...) const [with X = {const std::integral_constant<long unsigned int, 0ul>&, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> >}; Tag = boost::hana::pair_tag]’ /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:39:34: required from ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = const std::integral_constant<long unsigned int, 1ul>&; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’ /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl:19:64: required from here /usr/local/include/boost/hana/pair.hpp:93:98: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >&)’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘const _hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ /usr/local/include/boost/hana/pair.hpp:94:99: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >&)’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘_hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘_hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘const _hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ /usr/local/include/boost/hana/pair.hpp: In instantiation of ‘static constexpr decltype(auto) boost::hana::first_implboost::hana::pair_tag::apply(P&&) [with P = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >&]’: /usr/local/include/boost/hana/first.hpp:34:28: required from ‘constexpr decltype(auto) boost::hana::first_t::operator()(Pair&&) const [with Pair = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >&]’ /usr/local/include/boost/hana/map.hpp:307:45: required from ‘static constexpr auto boost::hana::insert_implboost::hana::map_tag::apply(Map&&, Pair&&) [with Map = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Pair = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >]’ /usr/local/include/boost/hana/insert.hpp:28:68: required from ‘constexpr decltype(auto) boost::hana::insert_t::operator()(Set&&, Args&& ...) const [with Set = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Args = {boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >}]’ /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:38:42: required from ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = const std::integral_constant<long unsigned int, 1ul>&; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’ /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl:19:64: required from here /usr/local/include/boost/hana/pair.hpp:166:49: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >&)’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘const _hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/map.hpp:29:0, from /usr/local/include/boost/hana.hpp:133, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/hash_table.hpp: In instantiation of ‘struct boost::hana::detail::find_indices<boost::hana::detail::hash_table<>, void>’: /usr/local/include/boost/hana/detail/hash_table.hpp:91:62: required from ‘struct boost::hana::detail::find_index<boost::hana::detail::hash_table<>, void, boost::hana::detail::KeyAtIndex<boost::hana::basic_tuple<> >::apply>’ /usr/local/include/boost/hana/map.hpp:310:20: required from ‘static constexpr auto boost::hana::insert_implboost::hana::map_tag::apply(Map&&, Pair&&) [with Map = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Pair = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >]’ /usr/local/include/boost/hana/insert.hpp:28:68: required from ‘constexpr decltype(auto) boost::hana::insert_t::operator()(Set&&, Args&& ...) const [with Set = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Args = {boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<std::integral_constant<long unsigned int, 1ul>, boost::hana::integral_constant<bool, false> > >}]’ /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:38:42: required from ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = const std::integral_constant<long unsigned int, 1ul>&; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’ /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl:19:64: required from here /usr/local/include/boost/hana/detail/hash_table.hpp:50:50: error: invalid use of void expression using Hash = typename decltype(hana::hash(std::declval()))::type; ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /home/mahdi/dev/ecst/include/ecst/./mp/option_map.hpp:9:0, from /home/mahdi/dev/ecst/include/ecst/mp.hpp:10, from /home/mahdi/dev/ecst/include/ecst/./settings/data.hpp:9, from /home/mahdi/dev/ecst/include/ecst/settings.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/./utils/sparse_int_set.hpp:12, from /home/mahdi/dev/ecst/include/./ecst/utils.hpp:9, from /home/mahdi/dev/ecst/include/ecst.hpp:15, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp: In instantiation of ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = const std::integral_constant<long unsigned int, 1ul>&; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’: /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl:19:64: required from here /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:39:75: error: ‘void new_map’ has incomplete type bh::make_pair(key, bh::make_pair(FWD(x), bh::false_c))); ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:8:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl: In function ‘constexpr auto ecst::settings::make()’: /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl:20:17: error: invalid use of ‘void’ .add( ^ In file included from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12:0, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:23:71: error: template argument 1 is invalid #define ECST_DECAY_DECLTYPE(...) ::ecst::decay_t<decltype(VA_ARGS)> ^ /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl:29:27: note: in expansion of macro ‘ECST_DECAY_DECLTYPE’ return impl::data<ECST_DECAY_DECLTYPE(d_opts)>{}; ^~~~~~~~~~~~~~~~~~~ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:8:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/settings_make.inl:29:54: error: template argument 1 is invalid return impl::data<ECST_DECAY_DECLTYPE(d_opts)>{}; ^ In file included from /home/mahdi/dev/ecst/example/particles.cpp:7:0: /home/mahdi/dev/ecst/example/../test/ecst/settings_generator.hpp: In lambda function: /home/mahdi/dev/ecst/example/../test/ecst/settings_generator.hpp:52:37: error: invalid use of ‘void’ .set_threading(x_threading) // . ^ In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp: In instantiation of ‘constexpr boost::hana::pair<First, Second>::pair(boost::hana::pair<T, U>&&) [with T = std::integral_constant<long unsigned int, 0ul>; U = boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> >; = void; First = std::integral_constant<long unsigned int, 0ul>; Second = boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> >]’: /usr/local/include/boost/hana/fwd/core/make.hpp:61:64: required from ‘constexpr decltype(auto) boost::hana::make_t::operator()(X&& ...) const [with X = {const std::integral_constant<long unsigned int, 0ul>&, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> >}; Tag = boost::hana::pair_tag]’ /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:39:34: required from ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = const ecst::signature::component::impl::default_maker_dispatch_t&; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’ /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:21: required from ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::position}]’ /home/mahdi/dev/ecst/example/particles.cpp:289:38: required from here /usr/local/include/boost/hana/pair.hpp:93:98: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >&)’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘const _hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ /usr/local/include/boost/hana/pair.hpp:94:99: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >&)’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘_hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘_hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘const _hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ /usr/local/include/boost/hana/pair.hpp: In instantiation of ‘static constexpr decltype(auto) boost::hana::first_implboost::hana::pair_tag::apply(P&&) [with P = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >&]’: /usr/local/include/boost/hana/first.hpp:34:28: required from ‘constexpr decltype(auto) boost::hana::first_t::operator()(Pair&&) const [with Pair = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >&]’ /usr/local/include/boost/hana/map.hpp:307:45: required from ‘static constexpr auto boost::hana::insert_implboost::hana::map_tag::apply(Map&&, Pair&&) [with Map = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Pair = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >]’ /usr/local/include/boost/hana/insert.hpp:28:68: required from ‘constexpr decltype(auto) boost::hana::insert_t::operator()(Set&&, Args&& ...) const [with Set = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Args = {boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >}]’ /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:38:42: required from ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = const ecst::signature::component::impl::default_maker_dispatch_t&; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’ /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:21: required from ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::position}]’ /home/mahdi/dev/ecst/example/particles.cpp:289:38: required from here /usr/local/include/boost/hana/pair.hpp:166:49: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >&)’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘const _hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::signature::component::impl::default_maker_dispatch_t, boost::hana::integral_constant<bool, false> > >’ In file included from /home/mahdi/dev/ecst/include/ecst/./mp/option_map.hpp:9:0, from /home/mahdi/dev/ecst/include/ecst/mp.hpp:10, from /home/mahdi/dev/ecst/include/ecst/./settings/data.hpp:9, from /home/mahdi/dev/ecst/include/ecst/settings.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/./utils/sparse_int_set.hpp:12, from /home/mahdi/dev/ecst/include/./ecst/utils.hpp:9, from /home/mahdi/dev/ecst/include/ecst.hpp:15, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp: In instantiation of ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = const ecst::signature::component::impl::default_maker_dispatch_t&; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:21: required from ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::position}]’ /home/mahdi/dev/ecst/example/particles.cpp:289:38: required from here /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:39:75: error: ‘void new_map’ has incomplete type bh::make_pair(key, bh::make_pair(FWD(x), bh::false_c))); ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:9:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl: In instantiation of ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::position}]’: /home/mahdi/dev/ecst/example/particles.cpp:289:38: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:62: error: ‘constexpr const void d_opts’ has incomplete type .add(impl::keys::storage, impl::default_maker); ^ /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl: In instantiation of ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::velocity}]’: /home/mahdi/dev/ecst/example/particles.cpp:290:38: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:62: error: ‘constexpr const void d_opts’ has incomplete type /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl: In instantiation of ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::acceleration}]’: /home/mahdi/dev/ecst/example/particles.cpp:291:42: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:62: error: ‘constexpr const void d_opts’ has incomplete type /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl: In instantiation of ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::curve}]’: /home/mahdi/dev/ecst/example/particles.cpp:292:35: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:62: error: ‘constexpr const void d_opts’ has incomplete type /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl: In instantiation of ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::color}]’: /home/mahdi/dev/ecst/example/particles.cpp:293:35: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:62: error: ‘constexpr const void d_opts’ has incomplete type /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl: In instantiation of ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::circle_shape}]’: /home/mahdi/dev/ecst/example/particles.cpp:294:42: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:62: error: ‘constexpr const void d_opts’ has incomplete type /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl: In instantiation of ‘constexpr auto ecst::signature::component::make(TComponentTags ...) [with TComponentTags = {ecst::tag::component::impl::tag_implexample::component::life}]’: /home/mahdi/dev/ecst/example/particles.cpp:295:34: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_component_make.inl:97:62: error: ‘constexpr const void d_opts’ has incomplete type /home/mahdi/dev/ecst/example/particles.cpp: In function ‘constexpr auto example::ecst_setup::make_csl()’: /home/mahdi/dev/ecst/example/particles.cpp:296:17: error: invalid use of void expression ); ^ In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp: In instantiation of ‘constexpr boost::hana::pair<First, Second>::pair(boost::hana::pair<T, U>&&) [with T = std::integral_constant<long unsigned int, 0ul>; U = boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> >; = void; First = std::integral_constant<long unsigned int, 0ul>; Second = boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> >]’: /usr/local/include/boost/hana/fwd/core/make.hpp:61:64: required from ‘constexpr decltype(auto) boost::hana::make_t::operator()(X&& ...) const [with X = {const std::integral_constant<long unsigned int, 0ul>&, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> >}; Tag = boost::hana::pair_tag]’ /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:39:34: required from ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = ecst::inner_parallelism::strategy::none::impl::parameters; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’ /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: required from ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::acceleration]’ /home/mahdi/dev/ecst/example/particles.cpp:321:42: required from here /usr/local/include/boost/hana/pair.hpp:93:98: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >&)’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:93:98: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ : detail::ebo<detail::pix<0>, First>(static_cast<T&&>(detail::ebo_get<detail::pix<0>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:93:98: note: ‘const _hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ /usr/local/include/boost/hana/pair.hpp:94:99: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >&)’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<1>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘_hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘_hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ , detail::ebo<detail::pix<1>, Second>(static_cast<U&&>(detail::ebo_get<detail::pix<1>>(other))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ /usr/local/include/boost/hana/pair.hpp:94:99: note: template argument ‘0’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:94:99: note: ‘const _hana::ebo<boost::hana::detail::pix<1>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ /usr/local/include/boost/hana/pair.hpp: In instantiation of ‘static constexpr decltype(auto) boost::hana::first_implboost::hana::pair_tag::apply(P&&) [with P = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >&]’: /usr/local/include/boost/hana/first.hpp:34:28: required from ‘constexpr decltype(auto) boost::hana::first_t::operator()(Pair&&) const [with Pair = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >&]’ /usr/local/include/boost/hana/map.hpp:307:45: required from ‘static constexpr auto boost::hana::insert_implboost::hana::map_tag::apply(Map&&, Pair&&) [with Map = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Pair = boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >]’ /usr/local/include/boost/hana/insert.hpp:28:68: required from ‘constexpr decltype(auto) boost::hana::insert_t::operator()(Set&&, Args&& ...) const [with Set = const boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >&; Args = {boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >}]’ /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:38:42: required from ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = ecst::inner_parallelism::strategy::none::impl::parameters; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’ /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: required from ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::acceleration]’ /home/mahdi/dev/ecst/example/particles.cpp:321:42: required from here /usr/local/include/boost/hana/pair.hpp:166:49: error: no matching function for call to ‘ebo_get(boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >&)’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, false>&&) constexpr V&& ebo_get(ebo<K, V, false>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:104:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, false>&) constexpr V& ebo_get(ebo<K, V, false>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:100:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘_hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, false>&) constexpr V const& ebo_get(ebo<K, V, false> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:96:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘true’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ is not derived from ‘const _hana::ebo<boost::hana::detail::pix<0>, V, false>’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: candidate: template<class K, class V> constexpr V&& _hana::ebo_get(_hana::ebo<K, V, true>&&) constexpr V&& ebo_get(ebo<K, V, true>&& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:91:19: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: candidate: template<class K, class V> constexpr V& _hana::ebo_get(_hana::ebo<K, V, true>&) constexpr V& ebo_get(ebo<K, V, true>& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:87:18: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘_hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ In file included from /usr/local/include/boost/hana/pair.hpp:17:0, from /usr/local/include/boost/hana/detail/struct_macros.hpp:27, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: candidate: template<class K, class V> constexpr const V& _hana::ebo_get(const _hana::ebo<K, V, true>&) constexpr V const& ebo_get(ebo<K, V, true> const& x) ^~~~~~~ /usr/local/include/boost/hana/detail/ebo.hpp:83:24: note: template argument deduction/substitution failed: In file included from /usr/local/include/boost/hana/detail/struct_macros.hpp:27:0, from /usr/local/include/boost/hana/adapt_adt.hpp:15, from /usr/local/include/boost/hana.hpp:59, from /home/mahdi/dev/ecst/include/./ecst/./aliases/hana.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/aliases.hpp:12, from /home/mahdi/dev/ecst/include/ecst.hpp:12, from /home/mahdi/dev/ecst/example/particles.cpp:6: /usr/local/include/boost/hana/pair.hpp:166:49: note: template argument ‘1’ does not match ‘#‘integer_cst’ not supported by dump_decl#’ { return detail::ebo_get<detail::pix<0>>(static_cast<P&&>(p)); } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/boost/hana/pair.hpp:166:49: note: ‘const _hana::ebo<boost::hana::detail::pix<0>, V, true>’ is an ambiguous base class of ‘boost::hana::pair<std::integral_constant<long unsigned int, 0ul>, boost::hana::pair<ecst::inner_parallelism::strategy::none::impl::parameters, boost::hana::integral_constant<bool, false> > >’ In file included from /home/mahdi/dev/ecst/include/ecst/./mp/option_map.hpp:9:0, from /home/mahdi/dev/ecst/include/ecst/mp.hpp:10, from /home/mahdi/dev/ecst/include/ecst/./settings/data.hpp:9, from /home/mahdi/dev/ecst/include/ecst/settings.hpp:9, from /home/mahdi/dev/ecst/include/./ecst/./utils/sparse_int_set.hpp:12, from /home/mahdi/dev/ecst/include/./ecst/utils.hpp:9, from /home/mahdi/dev/ecst/include/ecst.hpp:15, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp: In instantiation of ‘constexpr auto ecst::mp::option_map::impl::data::add(const TKey&, T&&) const [with TKey = std::integral_constant<long unsigned int, 0ul>; T = ecst::inner_parallelism::strategy::none::impl::parameters; TMap = boost::hana::detail::map_impl<boost::hana::detail::hash_table<>, boost::hana::basic_tuple<> >]’: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: required from ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::acceleration]’ /home/mahdi/dev/ecst/example/particles.cpp:321:42: required from here /home/mahdi/dev/ecst/include/ecst/./mp/./option_map/basic.hpp:39:75: error: ‘void new_map’ has incomplete type bh::make_pair(key, bh::make_pair(FWD(x), bh::false_c))); ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:10:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl: In instantiation of ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::acceleration]’: /home/mahdi/dev/ecst/example/particles.cpp:321:42: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: error: invalid use of ‘void’ mp::option_map::make() // . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .add(keys::parallelism, ips::none::v()) // . ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/mahdi/dev/ecst/example/particles.cpp: In function ‘constexpr auto example::ecst_setup::make_ssl()’: /home/mahdi/dev/ecst/example/particles.cpp:322:21: error: invalid use of ‘void’ .parallelism(test_p) // . ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:10:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl: In instantiation of ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::curve]’: /home/mahdi/dev/ecst/example/particles.cpp:327:35: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: error: invalid use of ‘void’ mp::option_map::make() // . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .add(keys::parallelism, ips::none::v()) // . ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/mahdi/dev/ecst/example/particles.cpp:328:21: error: invalid use of ‘void’ .dependencies(st::acceleration) // . ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:10:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl: In instantiation of ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::velocity]’: /home/mahdi/dev/ecst/example/particles.cpp:334:38: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: error: invalid use of ‘void’ mp::option_map::make() // . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .add(keys::parallelism, ips::none::v()) // . ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/mahdi/dev/ecst/example/particles.cpp:335:21: error: invalid use of ‘void’ .parallelism(test_p) // . ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:10:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl: In instantiation of ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::render_colored_circle]’: /home/mahdi/dev/ecst/example/particles.cpp:341:51: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: error: invalid use of ‘void’ mp::option_map::make() // . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .add(keys::parallelism, ips::none::v()) // . ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/mahdi/dev/ecst/example/particles.cpp:342:21: error: invalid use of ‘void’ .parallelism(test_p) // . ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:10:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl: In instantiation of ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::life]’: /home/mahdi/dev/ecst/example/particles.cpp:349:34: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: error: invalid use of ‘void’ mp::option_map::make() // . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .add(keys::parallelism, ips::none::v()) // . ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/mahdi/dev/ecst/example/particles.cpp:350:21: error: invalid use of ‘void’ .parallelism(test_p) // . ^ In file included from /home/mahdi/dev/ecst/include/./ecst/make_inl.hpp:10:0, from /home/mahdi/dev/ecst/include/ecst.hpp:51, from /home/mahdi/dev/ecst/example/particles.cpp:6: /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl: In instantiation of ‘constexpr auto ecst::signature::system::make(TSystemTag) [with TSystemTag = ecst::tag::system::impl::tag_implexample::system::fade]’: /home/mahdi/dev/ecst/example/particles.cpp:354:34: required from here /home/mahdi/dev/ecst/include/./ecst/./make_inl/signature_system_make.inl:21:21: error: invalid use of ‘void’ mp::option_map::make() // . ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .add(keys::parallelism, ips::none::v()) // . ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/mahdi/dev/ecst/example/particles.cpp:355:21: error: invalid use of ‘void’ .parallelism(test_p) // . ^ /home/mahdi/dev/ecst/example/particles.cpp: In function ‘int main()’: /home/mahdi/dev/ecst/example/particles.cpp:505:68: error: invalid use of void expression test::run_tests(test_impl, entity_count, make_csl(), make_ssl()); ^ CMakeFiles/particles.dir/build.make:62: recipe for target 'CMakeFiles/particles.dir/example/particles.cpp.o' failed make[2]: *** [CMakeFiles/particles.dir/example/particles.cpp.o] Error 1 CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/particles.dir/all' failed make[1]: *** [CMakeFiles/particles.dir/all] Error 2 Makefile:138: recipe for target 'all' failed make: *** [all] Error 2

    opened by macdi 3
  • Multiple definition errors

    Multiple definition errors

    Hey, I am experimenting with ecst but am encountering problems with multiple definitions occurring during linking. The full error message is:

    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x9a): multiple definition of `vrm::core::impl::assert::get_state()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x9a): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0xb4): multiple definition of `vrm::core::impl::is_strong_typedef_impl()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0xb4): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0xc2): multiple definition of `ecst::impl::decrement_cv_counter_and_notify_one(std::mutex&, std::condition_variable&, unsigned long long&)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0xc2): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0xfb): multiple definition of `ecst::impl::decrement_cv_counter_and_notify_all(std::mutex&, std::condition_variable&, unsigned long long&)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0xfb): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x134): multiple definition of `ecst::counter_blocker::counter_blocker(unsigned long long)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x134): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x134): multiple definition of `ecst::counter_blocker::counter_blocker(unsigned long long)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x134): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x174): multiple definition of `ecst::counter_blocker::decrement_and_notify_one()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x174): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x1a4): multiple definition of `ecst::counter_blocker::decrement_and_notify_all()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x1a4): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x1d3): multiple definition of `ecst::debug::impl::last_log()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x1d3): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x1e0): multiple definition of `ecst::debug::impl::tstrings()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x1e0): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x1ed): multiple definition of `ecst::debug::impl::fake_cout()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x1ed): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x1fa): multiple definition of `ecst::context::entity::is_valid_id(ecst::entity_id)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x1fa): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x212): multiple definition of `ecst::context::entity::impl::handle::handle()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x212): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x212): multiple definition of `ecst::context::entity::impl::handle::handle()'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x212): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x24c): multiple definition of `ecst::context::entity::impl::handle::handle(ecst::context::entity::impl::uninitialized_handle_init)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x24c): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x24c): multiple definition of `ecst::context::entity::impl::handle::handle(ecst::context::entity::impl::uninitialized_handle_init)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x24c): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x276): multiple definition of `ecst::context::entity::impl::handle::handle(ecst::entity_id, ecst::impl::counter)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x276): first defined here
    C:\Users\sgodw\AppData\Local\Temp\ccdxXR59.o:source.cpp:(.text+0x276): multiple definition of `ecst::context::entity::impl::handle::handle(ecst::entity_id, ecst::impl::counter)'
    C:\Users\sgodw\AppData\Local\Temp\ccZpoHfj.o:main.cpp:(.text+0x276): first defined here
    collect2.exe: error: ld returned 1 exit status
    

    The error above was generated by simply compiling and linking two source files that include ecst.hpp. Unless I am missing something obvious, it seems the solution is to just inline the above definitions since its header only?

    opened by sgodwin424 3
  • Library asserts when I have too little number of entities

    Library asserts when I have too little number of entities

    It seems like if I have A entities spawned on my pc, and the number of cores I have on my pc is B,

    then if A is < B, my program dies.

    I have been working on integrating ecst into my project and found this out, so I don't have a super small reproducable test case. I did observe this behavior directly though.

    This was with inner_parallelism() on/off.

    This is the assert that is triggerring: https://github.com/SuperV1234/ecst/blob/master/include/ecst/context/system/instance/instance_subtask.inl#L61

    My guess is there's a logic error, when the number of available entities is < the number of available cores, this assert is erroneously triggered.

    opened by bjadamson 3
  • Question  about the example

    Question about the example

    First, thanks for writing this library. It's really interesting to me, it would be nice if this became a solved problem. Anyways, moving onto my question, I'm wondering if you can help me understand what this is for: https://github.com/SuperV1234/ecst/blob/master/example/pres_code.cpp#L720-L721

    when inside the system definition this code is found: https://github.com/SuperV1234/ecst/blob/master/example/pres_code.cpp#L211-L212

    I guess my question is, what does declaring those tags as read/write do? Are they unavailable to the code within the system without first declaring them as read/write?

    Thanks !!

    opened by bjadamson 3
  • Checking if entity has a component

    Checking if entity has a component

    I am currently creating a small collision system that creates contacts similar to what is done in the particle example, but instead of outputting them from the system, the contacts are stored within a collidable component's vector. Then, from the perspective of each entity a unique system exists to perform the custom collision logic. These entities are given label components that allow for a way to differentiate entities from a high level perspective. So after an entity with, say a label component label1, has been given contacts in its collidable component, a system that reads entities with components label1 and collidable runs. It performs the custom collision logic needed for that entity type, but the problem is that there is no way to differentiate to what it is colliding with in the contact.

    Obviously, depending on what you're colliding with, the logic might need to be different. But from the access given with the data proxy, it seems it's not possible to test if a given entity as a component. In my case, I simply want to check if the entity that is being collided with has a specific label component such as enemy, etc. In the case of the example code, all entities are assumed to have the same collision logic with each other because they are all particles.

    I have perused the source code, and unless I missed something (which I may have), none of the proxy objects seem to give access to the necessary functions that can determine whether or not an entity has a component. So I am wondering whether or not it is possible to add a has_component function to the defer proxy class that can fulfill this role. I understand that this may have been omitted intentionally, and if so I would be interested in hearing how the above problem could be solved without it.

    I apologize if this is a bit off-topic for the project issues, and if so, I'll close it.

    enhancement help wanted 
    opened by sgodwin424 2
  • Compilation error using clang 3.9 libc++ on linux

    Compilation error using clang 3.9 libc++ on linux

    Hey, I ran into a compiler error when I pulled in this library into my project. It's super _easy_ to fix, but I'd like to work out a proper solution with you.

    With the code as it is, and my compiler settings as follows, I get the followoing compiler error:

    compiler=clang arch=x86 compiler.version=3.9 compiler.libcxx=libc++ build_type=Debug

    End of search list. In file included from /home/benjamin/github/BoomHS/main.cxx:13: In file included from /home/benjamin/github/BoomHS/external/ecst/include/ecst.hpp:15: In file included from /home/benjamin/github/BoomHS/external/ecst/include/./ecst/utils.hpp:9: In file included from /home/benjamin/github/BoomHS/external/ecst/include/./ecst/./utils/sparse_int_set.hpp:9: In file included from /home/benjamin/github/BoomHS/external/ecst/extlibs/vrm_core/include/vrm/core/experimental/sparse_set.hpp:8: In file included from /home/benjamin/github/BoomHS/external/ecst/extlibs/vrm_core/include/vrm/core/experimental/sparse_set/base_sparse_set.hpp:8: In file included from /home/benjamin/github/BoomHS/external/ecst/extlibs/vrm_core/include/vrm/core/experimental/sparse_set/impl/base_sparse_set.hpp:10: In file included from /home/benjamin/github/BoomHS/external/ecst/extlibs/vrm_core/include/vrm/core/experimental/resizable_buffer.hpp:9: /home/benjamin/github/BoomHS/external/ecst/extlibs/vrm_core/include/vrm/core/experimental/resizable_buffer/multi_resizable_buffer.hpp:60:38: error: no template named 'tuple_element_t' in namespace 'std'; did you mean 'tuple_element'? using nth_buffer_type = std::tuple_element_t<TN, buffer_tuple>; ~~~~~^~~~~~~~~~~~~~~ tuple_element /usr/include/c++/v1/__tuple:44:62: note: 'tuple_element' declared here template <size_t _Ip, class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_element; ^ 1 error generated. make[2]: *** [CMakeFiles/boomhs.dir/main.cxx.o] Error 1 make[1]: *** [CMakeFiles/boomhs.dir/all] Error 2 make: *** [all] Error 2

    The fix (for my compiler/setup) is to change this line: https://github.com/SuperV1234/vrm_core/blob/c0ed6218ba5f89755883ae48db92799c9c1623d2/include/vrm/core/experimental/resizable_buffer/multi_resizable_buffer.hpp#L60

    from std::tuple_element_t to std::tuple_element.

    Then it compiles fine. However looking at tuple element itself, it seems like the code written should be fine??? http://en.cppreference.com/w/cpp/utility/tuple/tuple_element

    What are your thoughts on working around this?

    opened by bjadamson 2
  • Hey, so i took a stab at my humble attempt of trying to improve the d…

    Hey, so i took a stab at my humble attempt of trying to improve the d…

    …ocumentation. I expect this to be an on-going effort, I hope this helps!

    Let me know if you think this is helpful, I want to help this project succeed! I'm hoping if I pair my "making a game" with "learning to use this library", others will have an easier time integrating ecst with their game.

    Anywho, love to talk this over with you.

    Here is the view I see on my fork of your repository: https://github.com/bjadamson/ecst/tree/documentation

    opened by bjadamson 1
  • Major changes

    Major changes

    • counter_blocker
      • counter_blocker::_counter is not atomic anymore, as it's always accessed through counter_blocker::_mutex (which is required due to the condition_variable)
      • Its interface is now more cleanly handled through methods (not global functions)
    • Major refactoring/cleanup
    • Some new tests
    opened by vittorioromeo 0
  • Multiple components of the same type

    Multiple components of the same type

    I am trying to figure out how one would implement multiple instances of a component. Is having a component like struct MyComponent { std::vector<MyComponentImpl> impl; } the suggested way to do this or do you have any other suggestion?

    opened by simonvpe 6
  • Suggestion: Producer/Consumer

    Suggestion: Producer/Consumer

    Just watched your talk and looked at your particle example. Good job on the library. I didn't really think of system logic being an (implicit) DAG (though one could interpret it as it having a cycle due to the game loop) which is neat.

    On to the point of this issue. I have a small suggestion, though I'm not sure how feasible it is or if it is really all that necessary, but I figured I would suggest it anyway.

    From my understanding a system can output data that other system(s) can consume (not sure if a set of systems can consume data from one producing system). However, from my observations, this approach requires the system producing the data to produce all of the data before any other system(s) that depend on this data to do any work.

    To my knowledge, this problem is exactly the generalised producer/consumer problem. Note that multiple producers could obviously be created from inner parallelism (perhaps other ways too) and multiple consumers from multiple subscribers to the data.

    To my belief, having this implemented can further increase the potential to utilise all cores of a system, as if the producer(s) and consumer(s) are only dependent on the shared data they can be ran concurrently (by only providing synchronisation over the shared data to implement the problem).

    enhancement help wanted 
    opened by miguelmartin75 1
  • The thread pool can freeze if all the tasks depend on something that's not being executed

    The thread pool can freeze if all the tasks depend on something that's not being executed

    Assumte that the thread pool has only 4 threads, and that there is a DAG path where 5 systems can be executed in parallel. The thread pool may deadlock as every system is waiting for its subtasks to be completed, but they cannot be enqueued as all threads are occupied.

    This would probably be improved by making the DAG execution asynchronous (see #21), but it would be nice to detect this "deadlock" from the thread pool and insert additional temporary "virtual threads" that solve the situation.

    bug help wanted 
    opened by vittorioromeo 1
  • Asynchronous DAG execution (no intermediate latches)

    Asynchronous DAG execution (no intermediate latches)

    Currently every fork/join in the implicitly generated DAG has a latch that blocks until all the "fork subtasks" are executed. This is not optimal thread pool usage as blocking is not required here and introduces unnecessary overhead.

    An asynchronous execution model should be used instead, with a single latch that wraps everything in order to synchronize it with the "rest of the world".

    Pseudocode example:

    void run_dag()
    {
        ecst::latch l(1);
        run_node_0()
            .then(run_node_1())
            .then(run_node_2a(), run_node_2b(), run_node_2c())
            .then(run_node_3())
            .then([&]{ l.arrive(); });
    
        l.wait();
    }
    
    enhancement help wanted 
    opened by vittorioromeo 0
  • Benchmark against `ecs_bench`

    Benchmark against `ecs_bench`

    ecs_bench is a repository benchmarking multiple Rust ECS implementations. It would be cool to benchmark ecst using the same techniques/examples and compare its performance to the Rust ECSs.

    help wanted 
    opened by vittorioromeo 1
Owner
Vittorio Romeo
[](){}();
Vittorio Romeo
C++ single-header entity component system library

ECS This is a simple C++ header-only type-safe entity component system library. It makes heavy use of C++11 constructs, so make sure you have an up to

Sam Bloomberg 409 Sep 21, 2022
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more

EnTT is a header-only, tiny and easy to use library for game programming and much more written in modern C++. Among others, it's used in Minecraft by

Michele Caini 7.2k Sep 16, 2022
apecs: A Petite Entity Component System

apecs: A Petite Entity Component System A header-only, very small entity component system with no external dependencies.

Matt Cummins 17 Jun 1, 2022
EntityX - A fast, type-safe C++ Entity-Component system

EntityX - A fast, type-safe C++ Entity Component System NOTE: The current stable release 1.0.0 breaks backward compatibility with < 1.0.0. See the cha

Alec Thomas 2k Sep 25, 2022
C++ entity-component system

CORGI Version 1.0.2 {#corgi_readme} CORGI is a C++ entity-component system library developed primarily for games that focus on simplicity and flexibil

Google 250 Jul 26, 2022
Thoughts about entity-component-system

About Warning: This is not a complete production-ready library for entity-component-system. This is only my thoughts about how the modern entity-compo

Sergey Makeev 176 Sep 9, 2022
An open source C++ entity system.

anax ARCHIVED: as I haven't maintained this library for at least a couple of years. I don't have the time or interest to work on this. Please use anot

Miguel Martin 457 Aug 27, 2022
Performance Evaluation of a Parallel Image Enhancement Technique for Dark Images on Multithreaded CPU and GPU Architectures

Performance Evaluation of a Parallel Image Enhancement Technique for Dark Images on Multithreaded CPU and GPU Architectures Image processing is a rese

Batuhan Hangün 5 Nov 4, 2021
A way to visualize your multithreaded Mbed OS application like never before!

MbedSysview Library A way to visualize your multithreaded Mbed OS application like never before! MbedSysview is a library that connects the Mbed OS ta

Jamie Smith 4 Aug 10, 2022
DimensionalAnalysis - A compact C++ header-only library providing compile-time dimensional analysis and unit awareness

Dimwits ...or DIMensional analysis With unITS is a C++14 library for compile-time dimensional analysis and unit awareness. Minimal Example #include <i

NJOY 8 Jul 8, 2022
Pipet - c++ library for building lightweight processing pipeline at compile-time for string obfuscation, aes ciphering or whatever you want

Pipet Pipet is a lightweight c++17 headers-only library than can be used to build simple processing pipelines at compile time. Features Compile-time p

C. G. 59 Jul 30, 2022
Experimental Worms Armageddon WormKit module that implements real-time online multiplayer for racing schemes

wkRealTime v.0.0.4d Experimental Worms Armageddon WormKit module that implements real-time online multiplayer for racing schemes. Installation Place w

null 15 Jul 12, 2022
Modern C++ 20 compile time OpenAPI parser and code generator implementation

OpenApi++ : openapipp This is a proof of concept, currently under active work to become the best OpenAPI implementation for C++. It allows compile tim

tipi.build 6 Aug 20, 2022
Ctpg - Compile Time Parser Generator

Ctpg - Compile Time Parser Generator is a C++ single header library which takes a language description as a C++ code and turns it into a LR1 table parser with a deterministic finite automaton lexical analyzer, all in compile time.

Piotr Winter 367 Sep 13, 2022
Type safe - Zero overhead utilities for preventing bugs at compile time

type_safe type_safe provides zero overhead abstractions that use the C++ type system to prevent bugs. Zero overhead abstractions here and in following

Jonathan Müller 1.1k Sep 20, 2022
Compile-time C Compiler implemented as C++14 constant expressions

constexpr-8cc: Compile-time C Compiler constexpr-8cc is a compile-time C compiler implemented as C++14 constant expressions. This enables you to compi

Keiichi Watanabe 735 Sep 9, 2022
Set of tests to benchmark the compile time of c++ constructs

CompileTimer Set of tests to benchmark the compile time of c++ constructs This project is an attempt to understand what c++ construct take how much ti

Jan Wilmans 6 Sep 21, 2019