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_); +}