16 #ifndef OPENKALMAN_WRAP_ANGLES_HPP 17 #define OPENKALMAN_WRAP_ANGLES_HPP 22 template<indexible Arg>
25 template<
typename Arg, std::enable_if_t<indexible<Arg>,
int> = 0>
26 constexpr decltype(
auto)
28 wrap_angles(Arg&& arg)
30 if constexpr (coordinates::euclidean_pattern<vector_space_descriptor_of_t<Arg, 0>> or identity_matrix<Arg> or zero<Arg>)
32 return std::forward<Arg>(arg);
34 else if constexpr (interface::wrap_angles_defined_for<Arg, Arg&&>)
36 return interface::library_interface<std::decay_t<Arg>>::wrap_angles(std::forward<Arg>(arg), get_vector_space_descriptor<0>(arg));
47 #endif //OPENKALMAN_WRAP_ANGLES_HPP decltype(auto) constexpr from_euclidean(Arg &&arg, const V &v)
Project the Euclidean vector space associated with index 0 to coordinates::pattern v after applying d...
Definition: from_euclidean.hpp:35
constexpr bool indexible
T is a generalized tensor type.
Definition: indexible.hpp:32
The root namespace for OpenKalman.
Definition: basics.hpp:34
decltype(auto) constexpr to_euclidean(Arg &&arg)
Project the vector space associated with index 0 to a Euclidean space for applying directional statis...
Definition: to_euclidean.hpp:38