From a09637f0d1ee05cc8ccbd9b1b8e51f95824e8eea Mon Sep 17 00:00:00 2001 From: Luke Valenty Date: Thu, 15 Feb 2024 07:10:07 -0800 Subject: [PATCH] add safe_cast --- include/safe.hpp | 1 + include/safe/safe_cast.hpp | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 include/safe/safe_cast.hpp diff --git a/include/safe.hpp b/include/safe.hpp index 3722100..a3dbba3 100644 --- a/include/safe.hpp +++ b/include/safe.hpp @@ -10,3 +10,4 @@ #include #include #include +#include diff --git a/include/safe/safe_cast.hpp b/include/safe/safe_cast.hpp new file mode 100644 index 0000000..be0565d --- /dev/null +++ b/include/safe/safe_cast.hpp @@ -0,0 +1,21 @@ +#pragma once + + +#include +#include +#include + +#include + + +template< + typename T, + safe::Var F> +requires ( + std::is_convertible_v and + safe::detail::integral_type::requirement >= F::requirement) +[[nodiscard]] SAFE_INLINE constexpr auto safe_cast( + F const & src +) { + return static_cast(src.unsafe_value_); +}