19 std::is_same_v<T, uint16_t>
20 || std::is_same_v<T, uint32_t>
21 || std::is_same_v<T, uint64_t>
22 || std::is_same_v<T, int16_t>
23 || std::is_same_v<T, int32_t>
24 || std::is_same_v<T, int64_t>
25 || std::is_same_v<T, double>
26#if ARGON_HAS_HALF_FLOAT
27 || std::is_same_v<T, float>
28 || std::is_same_v<T, float32_t>
36 std::is_same_v<T, uint8_t>
37 || std::is_same_v<T, uint16_t>
38 || std::is_same_v<T, uint32_t>
39 || std::is_same_v<T, int8_t>
40 || std::is_same_v<T, int16_t>
41 || std::is_same_v<T, int32_t>
42 || std::is_same_v<T, float>
43#if ARGON_HAS_HALF_FLOAT
44 || std::is_same_v<T, float16_t>
62template <>
struct NextLarger<int16_t> {
using type = int32_t; };
63template <>
struct NextLarger<uint16_t> {
using type = uint32_t; };
64template <>
struct NextLarger<int32_t> {
using type = int64_t; };
65template <>
struct NextLarger<uint32_t> {
using type = uint64_t; };
66template <>
struct NextLarger<float> {
using type = double; };
67#if ARGON_HAS_HALF_FLOAT
68template <>
struct NextLarger<float16_t> {
using type = float; };
84template <>
struct NextSmaller<int32_t> {
using type = int16_t; };
85template <>
struct NextSmaller<uint32_t> {
using type = uint16_t; };
86template <>
struct NextSmaller<int64_t> {
using type = int32_t; };
87template <>
struct NextSmaller<uint64_t> {
using type = uint32_t; };
88template <>
struct NextSmaller<double> {
using type = float; };
89#if ARGON_HAS_HALF_FLOAT
90template <>
struct NextSmaller<float> {
using type = float16_t; };