38 typename RemoveRef<T>::PointType p,
39 typename RemoveRef<T>::ScalarType s) {
40 typename RemoveRef<T>::PointType;
41 typename RemoveRef<T>::ScalarType;
54 { obj.length() } -> std::same_as<
decltype(s)>;
55 { obj.squaredLength() } -> std::same_as<
decltype(s)>;
57 { obj == obj } -> std::same_as<bool>;
58 { obj != obj } -> std::same_as<bool>;
60 { obj + obj } -> std::convertible_to<RemoveRef<T>>;
61 { obj - obj } -> std::convertible_to<RemoveRef<T>>;
62 { obj* s } -> std::convertible_to<RemoveRef<T>>;
63 { obj / s } -> std::convertible_to<RemoveRef<T>>;
67 { obj.flip() } -> std::same_as<void>;
69 { obj = obj } -> std::same_as<T&>;
71 { obj += obj } -> std::same_as<T&>;
72 { obj -= obj } -> std::same_as<T&>;
73 { obj *= s } -> std::same_as<T&>;
74 { obj /= s } -> std::same_as<T&>;