Correct get_int_t to get_uint_t.

Add get_sint_t.
This commit is contained in:
Nekotekina 2019-07-26 19:00:56 +03:00
parent 997e3046e3
commit ec2db8edbc
3 changed files with 39 additions and 32 deletions

View file

@ -131,38 +131,45 @@ using steady_clock = std::conditional<
std::chrono::high_resolution_clock::is_steady,
std::chrono::high_resolution_clock, std::chrono::steady_clock>::type;
// Get unsigned integral type from type size
template<size_t N>
// Get integral type from type size
template <std::size_t N>
struct get_int_impl
{
};
template<>
template <>
struct get_int_impl<sizeof(u8)>
{
using type = u8;
using utype = u8;
using stype = s8;
};
template<>
template <>
struct get_int_impl<sizeof(u16)>
{
using type = u16;
using utype = u16;
using stype = s16;
};
template<>
template <>
struct get_int_impl<sizeof(u32)>
{
using type = u32;
using utype = u32;
using stype = s32;
};
template<>
template <>
struct get_int_impl<sizeof(u64)>
{
using type = u64;
using utype = u64;
using stype = s64;
};
template <size_t N>
using get_int_t = typename get_int_impl<N>::type;
template <std::size_t N>
using get_uint_t = typename get_int_impl<N>::utype;
template <std::size_t N>
using get_sint_t = typename get_int_impl<N>::stype;
namespace gsl
{