17 #ifndef OPENKALMAN_VALUES_CAST_TO_HPP 18 #define OPENKALMAN_VALUES_CAST_TO_HPP 36 template<
typename T,
typename Arg>
40 static constexpr
auto value {
static_cast<value_type
>(values::fixed_value_of_v<Arg>)};
42 constexpr
operator value_type()
const {
return value; }
43 constexpr value_type operator()()
const {
return value; }
47 #ifndef __cpp_concepts 50 template<
typename Arg,
typename T,
typename =
void>
53 template<
typename Arg,
typename T>
55 stdex::convertible_to<typename value_type_of<Arg>::type, T>>>
59 template<
typename T,
typename Arg,
typename =
void,
typename =
void>
62 template<
typename T,
typename Arg>
63 struct is_fixable<T, Arg, std::void_t<fixed_value<T, fixed_value_of_v<Arg>>>>
67 template<
typename Arg,
typename T,
typename =
void>
70 template<
typename Arg,
typename T>
72 stdex::convertible_to<typename real_type_of<Arg>::type, typename real_type_of<T>::type> >>
86 template<
typename T,
typename Arg> requires
87 std::same_as<T, std::decay_t<T>> and
88 (not number<T> or not complex<Arg>) and
89 std::convertible_to<value_type_of_t<Arg>, T>
91 template<
typename T,
typename Arg, std::enable_if_t<
92 (not number<T> or not complex<Arg>) and
93 std::is_same_v<T, std::decay_t<T>> and
96 constexpr decltype(
auto)
101 return std::forward<Arg>(arg);
103 else if constexpr (fixed<Arg>)
105 #ifdef __cpp_concepts 129 #ifdef __cpp_concepts 130 template<number T, complex Arg> requires
131 std::same_as<T, std::decay_t<T>> and
133 constexpr
complex decltype(
auto)
135 template<
typename T,
typename Arg, std::enable_if_t<
138 std::is_same_v<T, std::decay_t<T>> and
140 constexpr decltype(
auto)
145 return std::forward<Arg>(arg);
147 return internal::make_complex_number<real_type_of_t<T>>(std::forward<Arg>(arg));
Definition: cast_to.hpp:68
typename real_type_of< T >::type real_type_of_t
Helper template for real_type_of.
Definition: real_type_of.hpp:55
Definition: fixed_value.hpp:41
typename value_type_of< T >::type value_type_of_t
Helper template for value_type_of.
Definition: value_type_of.hpp:52
constexpr bool complex
T is a value that reduces to std::complex or a custom complex type.
Definition: complex.hpp:47
Definition for values::to_value_type.
decltype(auto) constexpr to_value_type(Arg &&arg)
Convert, if necessary, a fixed or dynamic value to its underlying base type.
Definition: to_value_type.hpp:28
Definition for value:value_type_of and value:value_type_of_t.
A fixed value cast from another fixed value.
Definition: cast_to.hpp:37
Definition for values::abs.
Definition: fixed-constants.hpp:23
decltype(auto) constexpr cast_to(Arg &&arg)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: cast_to.hpp:97
Definition: cast_to.hpp:51
Definition: cast_to.hpp:60
Basic definitions for OpenKalman as a whole.
Definition for values::complex.
Definition for values::value.