Matrix is really linear transformation.
esv::make_signed_t is used to get a signed integral type from a known source integral type.
That is, it gets esv::ix32 from esv::ux16, esv::ix32; gets esv::i32 from esv::u16, esv::i32; gets esv::i64 from esv::u32, esv::i64; ... etc.
If the source integral type is greater than or equal to esv::u64 or esv::ux64, it gets esv::overflow_type.
If the source type is not esv::integral type, it gets esv::overflow_type too, instead of compile errors.
esv::make_signed_t related - esv::make_signed_basic_t, esv::make_signed_ect_t
using target_type = esv::make_signed_t<source_integral_type>; static_assert(! esv::is_same_v<target_type, esv::overflow_type>);