co_ecs 0.9.0
Cobalt ECS
Loading...
Searching...
No Matches
view_arguments.hpp
Go to the documentation of this file.
1#pragma once
2
4
5namespace co_ecs {
6
7// Forward declaration of a view class
8template<component_reference... Args>
9class view;
10
11namespace detail {
12
13// Help to convert std::tuple<Args...> into view<Args...>
14
16template<component_reference... Args>
17struct view_arguments {
19 static constexpr bool is_const = const_component_references_v<Args...>;
20};
21
22template<typename T>
23struct view_converter {};
24
25template<typename... Args>
26struct view_converter<std::tuple<Args...>> {
27 using view_t = view<Args...>;
28 using view_arguments_t = view_arguments<Args...>;
29};
30
31// Helper to decompose function type arguments
32template<typename F>
33struct func_decomposer {
34 using view_converter_t = view_converter<typename function_traits<F>::arguments_tuple_type>;
35 using view_t = view_converter_t::view_t;
36 static constexpr bool is_const = view_converter_t::view_arguments_t::is_const;
37};
38
39} // namespace detail
40} // namespace co_ecs
Definition archetype.hpp:11
constexpr bool const_component_references_v
Returns true when all Args are const references.
Definition component.hpp:142
STL namespace.