refactor: treat_as_floating_point constraint added for Rep in the trigonometric functions

This commit is contained in:
Mateusz Pusz
2022-09-05 12:20:57 +02:00
parent abc429a71a
commit 1238cc17c2

View File

@@ -342,6 +342,7 @@ template<Quantity Q1, Quantity Q2, Quantity Q3>
template<typename U, typename Rep> template<typename U, typename Rep>
requires treat_as_floating_point<Rep>
[[nodiscard]] inline dimensionless<one, Rep> sin(const angle<U, Rep>& q) noexcept [[nodiscard]] inline dimensionless<one, Rep> sin(const angle<U, Rep>& q) noexcept
requires requires { sin(q.number()); } || requires { std::sin(q.number()); } requires requires { sin(q.number()); } || requires { std::sin(q.number()); }
{ {
@@ -350,6 +351,7 @@ template<typename U, typename Rep>
} }
template<typename U, typename Rep> template<typename U, typename Rep>
requires treat_as_floating_point<Rep>
[[nodiscard]] inline dimensionless<one, Rep> cos(const angle<U, Rep>& q) noexcept [[nodiscard]] inline dimensionless<one, Rep> cos(const angle<U, Rep>& q) noexcept
requires requires { cos(q.number()); } || requires { std::cos(q.number()); } requires requires { cos(q.number()); } || requires { std::cos(q.number()); }
{ {
@@ -358,6 +360,7 @@ template<typename U, typename Rep>
} }
template<typename U, typename Rep> template<typename U, typename Rep>
requires treat_as_floating_point<Rep>
[[nodiscard]] inline dimensionless<one, Rep> tan(const angle<U, Rep>& q) noexcept [[nodiscard]] inline dimensionless<one, Rep> tan(const angle<U, Rep>& q) noexcept
requires requires { tan(q.number()); } || requires { std::tan(q.number()); } requires requires { tan(q.number()); } || requires { std::tan(q.number()); }
{ {
@@ -367,6 +370,7 @@ template<typename U, typename Rep>
template<typename U, typename Rep> template<typename U, typename Rep>
requires treat_as_floating_point<Rep>
[[nodiscard]] inline angle<radian, Rep> asin(const dimensionless<U, Rep>& q) noexcept [[nodiscard]] inline angle<radian, Rep> asin(const dimensionless<U, Rep>& q) noexcept
requires requires { asin(q.number()); } || requires { std::asin(q.number()); } requires requires { asin(q.number()); } || requires { std::asin(q.number()); }
{ {
@@ -375,6 +379,7 @@ template<typename U, typename Rep>
} }
template<typename U, typename Rep> template<typename U, typename Rep>
requires treat_as_floating_point<Rep>
[[nodiscard]] inline angle<radian, Rep> acos(const dimensionless<U, Rep>& q) noexcept [[nodiscard]] inline angle<radian, Rep> acos(const dimensionless<U, Rep>& q) noexcept
requires requires { acos(q.number()); } || requires { std::acos(q.number()); } requires requires { acos(q.number()); } || requires { std::acos(q.number()); }
{ {
@@ -383,6 +388,7 @@ template<typename U, typename Rep>
} }
template<typename U, typename Rep> template<typename U, typename Rep>
requires treat_as_floating_point<Rep>
[[nodiscard]] inline angle<radian, Rep> atan(const dimensionless<U, Rep>& q) noexcept [[nodiscard]] inline angle<radian, Rep> atan(const dimensionless<U, Rep>& q) noexcept
requires requires { atan(q.number()); } || requires { std::atan(q.number()); } requires requires { atan(q.number()); } || requires { std::atan(q.number()); }
{ {