17 #ifndef OPENKALMAN_GET_DESCRIPTOR_SIZE_HPP 18 #define OPENKALMAN_GET_DESCRIPTOR_SIZE_HPP 21 #include "coordinates/interfaces/coordinate_descriptor_traits.hpp" 32 template<descriptor Arg>
35 template<
typename Arg, std::enable_if_t<descriptor<Arg>,
int> = 0>
36 constexpr decltype(
auto)
38 get_descriptor_dimension(Arg&& arg)
40 if constexpr (values::index<Arg>)
42 return values::cast_to<std::size_t>(std::forward<Arg>(arg));
46 using U = std::decay_t<stdex::unwrap_ref_decay_t<Arg>>;
47 using Traits = interface::coordinate_descriptor_traits<U>;
48 if constexpr (std::is_same_v<U, std::decay_t<Arg>>) return Traits::dimension(
std::forward<Arg>(arg));
49 else return Traits::dimension(
std::forward<Arg>(arg).
get());
Definition for coordinates::euclidean_pattern.
constexpr detail_get::get_impl< i > get
A generalization of std::get, where the index is known at compile time.
Definition: get.hpp:50
Definition: get_descriptor_dimension.hpp:25
Header file for code relating to values (e.g., scalars and indices)
Definition for coordinates::descriptor.
constexpr bool index
T is an index value.
Definition: index.hpp:62