10#include <userver/compiler/demangle.hpp> 
   12USERVER_NAMESPACE_BEGIN
 
   19using PrintableValue = std::conditional_t<(
sizeof(T) > 1), T, 
int>;
 
   29template <
typename U, 
typename T>
 
   31  static_assert(std::is_integral_v<T>);
 
   32  static_assert(std::is_integral_v<U>);
 
   35  if (
static_cast<T>(result) != input || ((result < 0) != (input < 0))) {
 
   36    throw std::runtime_error(fmt::format(
 
   37        "Failed to convert {} {} into {} due to integer overflow",
 
   38        compiler::GetTypeName<T>(), 
static_cast<impl::PrintableValue<T>>(input),
 
   39        compiler::GetTypeName<U>()));