#pragma once #include "enum.h" #include #include namespace NYT { //////////////////////////////////////////////////////////////////////////////// template constexpr bool CanFitSubtype(); template constexpr bool IsInIntegralRange(S value); template constexpr std::optional TryCheckedIntegralCast(S value); template T CheckedIntegralCast(S value); //////////////////////////////////////////////////////////////////////////////// template requires TEnumTraits::IsEnum constexpr std::optional TryCheckedEnumCast(S value, bool enableUnknown = false); template requires TEnumTraits::IsEnum T CheckedEnumCast(S value); //////////////////////////////////////////////////////////////////////////////// } // namespace NYT #define CAST_INL_H_ #include "cast-inl.h" #undef CAST_INL_H_