32template <
typename T, auto value_>
35 static constexpr T
value = value_;
38template <
typename T = meta_impl_base::_default>
44template <auto d_ = impl::meta_impl_base_default,
typename T = decltype(d_)>
47template <auto d_ = impl::meta_impl_base_default,
typename T = decltype(d_)>
50template <
typename T = impl::meta_impl_base::_default>
58template <
auto... dims>
60 static constexpr size_t size =
sizeof...(dims);
63 template <
size_t i_,
size_t cur_,
auto... dims_>
66 template <
size_t i_,
auto dim,
auto... dims_>
68 static constexpr auto value =
dim;
71 template <
size_t i_,
size_t cur_,
auto dim,
auto... dims_>
74 static_assert(i_ <
size,
"i_ exceeded shape size");
75 static_assert(cur_ <
size,
"cur_ exceeded shape size");
80 static constexpr auto dim() {
81 return impl::template dim_impl<i, 0, dims...>::value;
85template <
auto... dims>
86static inline constexpr auto shape_v = shape<dims...> {};
90template <auto key_,
typename val_>
92 static constexpr auto key = key_;
96template <auto key_,
typename T>
99template <auto key_, auto val_,
typename T = decltype(val_)>
102template <
typename... Args>
104 static constexpr size_t arg_size =
sizeof...(Args);
107 template <
typename T>
117 template <auto value_,
typename type_>
119 static constexpr auto value = value_;
123 template <
auto key_,
size_t cur_,
typename... Elems>
126 template <
auto key_,
size_t cur_,
typename elem_,
typename... Elems>
128 static constexpr bool match_key = (key_ == elem_::key);
129 using ret =
typename std::conditional<match_key,
132 static constexpr int value = ret::value;
133 using type =
typename ret::type;
136 template <auto key_,
size_t cur_>
149 template <
typename... Elems>
152 template <
typename... Elems>
155 template <
typename dict_t_>
158 template <
typename... Elems>
161 template <
typename dict_t_,
int cur_i,
int begin_i,
int end_i>
164 template <
int cur_i,
int begin_i,
int end_i,
typename e_,
167 using nxt_dict =
typename std::conditional<(cur_i + 1 < end_i)
168 && (
sizeof...(Elems) > 0),
172 using type =
typename std::conditional<(begin_i <= cur_i)
178 template <
typename dict_t_,
typename e_,
int e_index>
188 template <
typename dict_t_,
typename... Elems>
191 template <
typename dict_t_,
typename e_,
typename... Elems>
196 template <
typename dict_t_,
typename e_,
typename... Elems>
200 template <
typename dict_t_,
typename e_>
202 static constexpr int e_index
203 = dict_t_::impl::template find_elem_index<e_::key>;
210 template <
typename U,
template <
typename>
typename G>
218 using find_elem_t =
typename impl::template find_elem<key_>::value;
223 template <
typename e_,
typename... Elems>
225 typename impl::template update_dict_impl<
typename impl::this_t, e_,
228 template <
typename T>
230 typename impl::template update_dict_impl<
typename impl::this_t,
233 template <
template <
typename>
typename G>
235 typename impl::template update_generator_impl<
typename impl::this_t,
Definition arch_config.hpp:24
typename T::type meta_type_t
Definition dict.hpp:54
typename meta_value< d_, T >::type meta_value_t
Definition dict.hpp:48
typename std::conditional< match_key, find_elem_impl_ret_type< cur_, elem_ >, find_elem_impl< key_, cur_+1, Elems... > >::type ret
Definition dict.hpp:131
typename ret::type type
Definition dict.hpp:133
void type
Definition dict.hpp:139
static constexpr auto value
Definition dict.hpp:119
type_ type
Definition dict.hpp:120
typename pre_dict::impl::template merge_dict_impl< post_dict >::type type
Definition dict.hpp:185
typename slicing_key_impl< dict_t_, 0, e_index+1, dict_t_::arg_size >::type post_dict
Definition dict.hpp:183
typename slicing_key_impl< dict_t_, 0, 0, e_index >::type::impl::template append_key_impl< e_ >::type pre_dict
Definition dict.hpp:181
typename std::conditional<(begin_i<=cur_i) &&(cur_i< end_i), typename nxt_dict::impl::template prepend_key_impl< e_ >, type_identity< nxt_dict > >::type::type type
Definition dict.hpp:175
typename std::conditional<(cur_i+1< end_i) &&(sizeof...(Elems) > 0), slicing_key_impl< dict_t< Elems... >, cur_i+1, begin_i, end_i >, empty_dict >::type::type nxt_dict
Definition dict.hpp:171
T type
Definition dict.hpp:109
typename std::conditional< e_index !=key_not_found, replace_key_impl< dict_t_, e_, e_index >, typename dict_t_::impl::template append_key_impl< e_ > >::type::type type
Definition dict.hpp:207
typename update_dict_impl< this_t, res_t >::type type
Definition dict.hpp:213
typename G< U >::type res_t
Definition dict.hpp:212
static constexpr int find_elem_index
Definition dict.hpp:144
static constexpr int key_not_found
Definition dict.hpp:115
dict_t< Args... > this_t
Definition dict.hpp:113
static constexpr auto find_elem_v
Definition dict.hpp:221
typename impl::template update_dict_impl< typename impl::this_t, T >::type update_dict_t
Definition dict.hpp:231
typename impl::template update_generator_impl< typename impl::this_t, G >::type update_generator_t
Definition dict.hpp:236
typename impl::template find_elem< key_ >::value find_elem_t
Definition dict.hpp:218
typename impl::template update_dict_impl< typename impl::this_t, e_, Elems... >::type update_t
Definition dict.hpp:226
static constexpr size_t arg_size
Definition dict.hpp:104
val_ value
Definition dict.hpp:93
static constexpr auto key
Definition dict.hpp:92
static constexpr auto dim()
Definition dict.hpp:80
static constexpr size_t size
Definition dict.hpp:60