cast.h 972 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. #include "enum.h"
  3. #include <library/cpp/yt/exception/exception.h>
  4. #include <optional>
  5. namespace NYT {
  6. ////////////////////////////////////////////////////////////////////////////////
  7. template <class T, class S>
  8. constexpr bool CanFitSubtype();
  9. template <class T, class S>
  10. constexpr bool IsInIntegralRange(S value);
  11. template <class T, class S>
  12. constexpr std::optional<T> TryCheckedIntegralCast(S value);
  13. template <class T, class S>
  14. T CheckedIntegralCast(S value);
  15. ////////////////////////////////////////////////////////////////////////////////
  16. template <class T, class S>
  17. requires TEnumTraits<T>::IsEnum
  18. constexpr std::optional<T> TryCheckedEnumCast(S value, bool enableUnknown = false);
  19. template <class T, class S>
  20. requires TEnumTraits<T>::IsEnum
  21. T CheckedEnumCast(S value);
  22. ////////////////////////////////////////////////////////////////////////////////
  23. } // namespace NYT
  24. #define CAST_INL_H_
  25. #include "cast-inl.h"
  26. #undef CAST_INL_H_