static_assert(sizeof(FromType)>sizeof(ToType)||(std::is_unsigned<FromType>::value&&std::is_signed<ToType>::value),"From type has to be bigger than to type.");
//static_assert(std::numeric_limits<ToType>::max() <= std::numeric_limits<FromType>::max(), "Maximum numeric limits of To type are larger than From type.");
)
//static_assert(std::numeric_limits<ToType>::min() >= std::numeric_limits<FromType>::min(), "Minimum numeric limits of To type are smaller than From type.");
static_assert(sizeof(FromType)>sizeof(ToType)||(std::is_unsigned<FromType>::value&&std::is_signed<ToType>::value),"From type has to be bigger than to type.");
//static_assert(std::numeric_limits<ToType>::max() <= std::numeric_limits<FromType>::max(), "Maximum numeric limits of To type are larger than From type.");
//static_assert(std::numeric_limits<ToType>::min() >= std::numeric_limits<FromType>::min(), "Minimum numeric limits of To type are smaller than From type.");