--- a/src/basics.h Tue Jun 14 17:55:50 2022 +0300 +++ b/src/basics.h Tue Jun 14 19:50:31 2022 +0300 @@ -37,6 +37,7 @@ #include <glm/glm.hpp> #include "geometry.h" #include "functional.h" +#include "typeconversions.h" template<typename T> using opt = std::optional<T>; @@ -51,46 +52,6 @@ return N; } -//! \brief casts @c x to a suitable unsigned integer -template<typename T> -constexpr auto unsigned_cast(T x) - -> std::enable_if_t<std::is_integral_v<T>, std::make_unsigned_t<T>> -{ - return static_cast<std::make_unsigned_t<T>>(x); -} - -//! \brief casts @c x to a suitable signed integer -template<typename T> -constexpr auto signed_cast(T x) - -> std::enable_if_t<std::is_integral_v<T>, std::make_signed_t<T>> -{ - return static_cast<std::make_signed_t<T>>(x); -} - -//! \brief casts floating point values to float -template<typename T> -constexpr auto float_cast(T x) - -> std::enable_if_t<std::is_floating_point_v<T>, float> -{ - return static_cast<float>(x); -} - -//! \brief casts floating point values to double -template<typename T> -constexpr auto double_cast(T x) - -> std::enable_if_t<std::is_floating_point_v<T>, double> -{ - return static_cast<double>(x); -} - -//! \brief casts floating point values to qreal -template<typename T> -constexpr auto qreal_cast(T x) - -> std::enable_if_t<std::is_floating_point_v<T>, qreal> -{ - return static_cast<qreal>(x); -} - template<int N, typename T, glm::qualifier Q> constexpr QPointF toQPointF(const glm::vec<N, T, Q>& vec) {