15 #ifndef GEOMETRY__VECTOR3__OPERATOR_HPP_
16 #define GEOMETRY__VECTOR3__OPERATOR_HPP_
19 #include <geometry_msgs/msg/point.hpp>
20 #include <geometry_msgs/msg/quaternion.hpp>
21 #include <geometry_msgs/msg/vector3.hpp>
28 typename T,
typename U,
29 std::enable_if_t<std::conjunction_v<IsLikeVector3<T>, IsLikeVector3<U>>, std::nullptr_t> =
33 if constexpr (std::is_same_v<T, geometry_msgs::msg::Vector3>) {
34 geometry_msgs::msg::Vector3 v;
40 geometry_msgs::msg::Point v;
49 typename T,
typename U,
50 std::enable_if_t<std::conjunction_v<IsLikeVector3<T>, IsLikeVector3<U>>, std::nullptr_t> =
54 if constexpr (std::is_same_v<T, geometry_msgs::msg::Vector3>) {
55 geometry_msgs::msg::Vector3 v;
61 geometry_msgs::msg::Point v;
70 typename T,
typename U,
71 std::enable_if_t<std::conjunction_v<IsLikeVector3<T>, std::is_scalar<U>>, std::nullptr_t> =
75 if constexpr (std::is_same_v<T, geometry_msgs::msg::Vector3>) {
76 geometry_msgs::msg::Vector3 v;
82 geometry_msgs::msg::Point v;
91 typename T,
typename U,
92 std::enable_if_t<std::conjunction_v<IsLikeVector3<T>, std::is_scalar<U>>, std::nullptr_t> =
96 if constexpr (std::is_same_v<T, geometry_msgs::msg::Vector3>) {
97 geometry_msgs::msg::Vector3 v;
103 geometry_msgs::msg::Point v;
112 typename T,
typename U,
113 std::enable_if_t<std::conjunction_v<IsLikeVector3<T>, IsLikeVector3<U>>, std::nullptr_t> =
115 auto operator+=(T & a,
const U & b) -> decltype(
auto)
auto operator/(const T &a, const U &b)
Definition: operator.hpp:94
auto operator*(const T &a, const U &b)
Definition: operator.hpp:57
auto operator+=(T &a, const U &b) -> decltype(auto)
Definition: operator.hpp:71
auto operator-(const T &a, const U &b)
Definition: operator.hpp:43
auto operator+(const T &a, const U &b)
Definition: operator.hpp:29
Definition: bounding_box.hpp:32